Commit d8fbc0b9 authored by T.J. Mercier's avatar T.J. Mercier Committed by Martin Liu
Browse files

BACKPORT: FROMLIST: dma-buf: Move sysfs work out of DMA-BUF export path



Recently, we noticed an issue where a process went into direct reclaim
while holding the kernfs rw semaphore for sysfs in write (exclusive)
mode. This caused processes who were doing DMA-BUF exports and releases
to go into uninterruptible sleep since they needed to acquire the same
semaphore for the DMA-BUF sysfs entry creation/deletion. In order to avoid
blocking DMA-BUF export for an indeterminate amount of time while
another process is holding the sysfs rw semaphore in exclusive mode,
this patch moves the per-buffer sysfs file creation to the default work
queue. Note that this can lead to a short-term inaccuracy in the dmabuf
sysfs statistics, but this is a tradeoff to prevent the hot path from
being blocked. A work_struct is added to dma_buf to achieve this, but as
it is unioned with the kobject in the sysfs_entry, dma_buf does not
increase in size.

Fixes: bdb8d06d ("dmabuf: Add the capability to expose DMA-BUF stats in sysfs")
Originally-by: default avatarHridya Valsaraju <hridya@google.com>
Signed-off-by: default avatarT.J. Mercier <tjmercier@google.com>
Bug: 206979019
Link: https://lore.kernel.org/lkml/CABdmKX2dNYhgOYdrrJU6-jt6F=LjCidbKhR6t4F7yaa0SPr+-A@mail.gmail.com/T/

Conflicts:
	include/linux/dma-buf.h

1. The android13-5.10 KMI is frozen, and the modification to struct
   dma_buf_sysfs_entry in the original patch triggers ABI check
   failures. Instead of an anonymous union, use the existing struct
   kobject directly as a work_struct with type punning.

(cherry picked from commit b78809ea5239174f9282b6a8e323baa7c5c231c0
         https://android.git.corp.google.com/kernel/common

 android13-5.15)

Bug: 237612875
Test: boot
Signed-off-by: default avatarMartin Liu <liumartin@google.com>
Signed-off-by: default avatarT.J. Mercier <tjmercier@google.com>
Change-Id: Ic0386849b6b248b0a72215633fc1a50782455bac
(cherry picked from commit fc02d358)
parent 81abaa85
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment