Overview
About vulnerability
In the Linux kernel, the following vulnerability has been resolved:
comedi: Make insn_rw_emulate_bits() do insn->n samples
The insn_rw_emulate_bits() function is used as a default handler for
INSN_READ instructions for subdevices that have a handler for
INSN_BITS but not for INSN_READ. Similarly, it is used as a default
handler for INSN_WRITE instructions for subdevices that have a handler
for INSN_BITS but not for INSN_WRITE. It works by emulating the
INSN_READ or INSN_WRITE instruction handling with a constructed
INSN_BITS instruction. However, INSN_READ and INSN_WRITE
instructions are supposed to be able read or write multiple samples,
indicated by the insn->n value, but insn_rw_emulate_bits() currently
only handles a single sample. For INSN_READ, the comedi core will
copy insn->n samples back to user-space. (That triggered KASAN
kernel-infoleak errors when insn->n was greater than 1, but that is
being fixed more generally elsewhere in the comedi core.)
Make insn_rw_emulate_bits() either handle insn->n samples, or return
an error, to conform to the general expectation for INSN_READ and
INSN_WRITE handlers.
Details
- Affected product:
- AlmaLinux 9.2 ESU , CentOS 6 ELS , CentOS 7 ELS , CentOS 8.4 ELS , CentOS 8.5 ELS , CentOS Stream 8 ELS , CloudLinux 7 ELS , Oracle Linux 6 ELS , Oracle Linux 7 ELS , RHEL 7 ELS , TuxCare 9.6 ESU , Ubuntu 16.04 ELS , Ubuntu 18.04 ELS , Ubuntu 20.04 ELS
- Affected packages:
- kernel @ 3.10.0 (+15 more)
In the Linux kernel, the following vulnerability has been resolved:
comedi: Make insn_rw_emulate_bits() do insn->n samples
The insn_rw_emulate_bits() function is used as a default handler for
INSN_READ instructions for subdevices that have a handler for
INSN_BITS but not for INSN_READ. Similarly, it is used as a default
handler for INSN_WRITE instructions for subdevices that have a handler
for INSN_BITS but not for INSN_WRITE. It works by emulating the
INSN_READ or INSN_WRITE instruction handling with a constructed
INSN_BITS instruction. However, INSN_READ and INSN_WRITE
instructions are supposed to be able read or write multiple samples,
indicated by the insn->n value, but insn_rw_emulate_bits() currently
only handles a single sample. For INSN_READ, the comedi core will
copy insn->n samples back to user-space. (That triggered KASAN
kernel-infoleak errors when insn->n was greater than 1, but that is
being fixed more generally elsewhere in the comedi core.)
Make insn_rw_emulate_bits() either handle insn->n samples, or return
an error, to conform to the general expectation for INSN_READ and
INSN_WRITE handlers.