]> Git Repo - linux.git/commitdiff
dmaengine: idxd: add pid to exported sysfs attribute for opened file
authorDave Jiang <[email protected]>
Fri, 7 Apr 2023 20:31:42 +0000 (13:31 -0700)
committerVinod Koul <[email protected]>
Wed, 12 Apr 2023 17:48:46 +0000 (23:18 +0530)
Provide the pid of the application for the opened file. This allows the
monitor daemon to easily correlate which app opened the file and easily
kill the app by pid if that is desired action.

Tested-by: Tony Zhu <[email protected]>
Signed-off-by: Dave Jiang <[email protected]>
Co-developed-by: Fenghua Yu <[email protected]>
Signed-off-by: Fenghua Yu <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Vinod Koul <[email protected]>
Documentation/ABI/stable/sysfs-driver-dma-idxd
drivers/dma/idxd/cdev.c

index 73ab86196a411cd98abcb64e0d225c2b0c7a5824..5d0df57f52987af65a448e625b83a411a0f33dcc 100644 (file)
@@ -335,3 +335,11 @@ Description:       Show the number of Completion Record (CR) faults failures that this
                driver cannot fault in the address for the CR. Typically this is caused
                by a bad address programmed in the submitted descriptor or a malicious
                submitter is using bad CR address on purpose.
+
+What:          /sys/bus/dsa/devices/wq<m>.<n>/dsa<x>\!wq<m>.<n>/file<y>/pid
+Date:          Sept 14, 2022
+KernelVersion: 6.4.0
+Contact:       [email protected]
+Description:   Show the process id of the application that opened the file. This is
+               helpful information for a monitor daemon that wants to kill the
+               application that opened the file.
index 2fb905f2545bc610299a09d8d613d6a7aa104679..ecbf67c2ad2b07d51ec6b05764be8dc4c51068db 100644 (file)
@@ -49,6 +49,7 @@ struct idxd_user_context {
        struct idxd_dev idxd_dev;
        u64 counters[COUNTER_MAX];
        int id;
+       pid_t pid;
 };
 
 static void idxd_cdev_evl_drain_pasid(struct idxd_wq *wq, u32 pasid);
@@ -78,9 +79,18 @@ static ssize_t cr_fault_failures_show(struct device *dev,
 }
 static DEVICE_ATTR_RO(cr_fault_failures);
 
+static ssize_t pid_show(struct device *dev, struct device_attribute *attr, char *buf)
+{
+       struct idxd_user_context *ctx = dev_to_uctx(dev);
+
+       return sysfs_emit(buf, "%u\n", ctx->pid);
+}
+static DEVICE_ATTR_RO(pid);
+
 static struct attribute *cdev_file_attributes[] = {
        &dev_attr_cr_faults.attr,
        &dev_attr_cr_fault_failures.attr,
+       &dev_attr_pid.attr,
        NULL
 };
 
@@ -238,6 +248,7 @@ static int idxd_cdev_open(struct inode *inode, struct file *filp)
 
        ctx->wq = wq;
        filp->private_data = ctx;
+       ctx->pid = current->pid;
 
        if (device_user_pasid_enabled(idxd)) {
                sva = iommu_sva_bind_device(dev, current->mm);
This page took 0.061226 seconds and 4 git commands to generate.