]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commit
dmaengine: idxd: add a write() method for applications to submit work
authorNikhil Rao <nikhil.rao@intel.com>
Wed, 24 Apr 2024 15:16:12 +0000 (15:16 +0000)
committerArjan van de Ven <arjan@linux.intel.com>
Mon, 13 May 2024 14:07:45 +0000 (14:07 +0000)
commit6827738dc684a87ad54ebba3ae7f3d7c977698eb
tree50a66f2cc2683d9b6c66335c430b0f2e89427d34
parente11452eb071b2a8e6ba52892b2e270bbdaa6640d
dmaengine: idxd: add a write() method for applications to submit work

After the patch to restrict the use of mmap() to CAP_SYS_RAWIO for
the currently existing devices, most applications can no longer make
use of the accelerators as in production "you don't run things as root".

To keep the DSA and IAA accelerators usable, hook up a write() method
so that applications can still submit work. In the write method,
sufficient input validation is performed to avoid the security issue
that required the mmap CAP_SYS_RAWIO check.

One complication is that the DSA device allows for indirect ("batched")
descriptors. There is no reasonable way to do the input validation
on these indirect descriptors so the write() method will not allow these
to be submitted to the hardware on affected hardware, and the sysfs
enumeration of support for the opcode is also removed.

Early performance data shows that the performance delta for most common
cases is within the noise.

Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
drivers/dma/idxd/cdev.c
drivers/dma/idxd/sysfs.c