iio: imu: adis16400: use DEFINE_DEBUGFS_ATTRIBUTE instead of DEFINE_SIMPLE_ATTRIBUTE
authorRohit Sarkar <rohitsarkar5398@gmail.com>
Tue, 31 Mar 2020 11:47:30 +0000 (17:17 +0530)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sun, 19 Apr 2020 15:56:25 +0000 (16:56 +0100)
debugfs_create_file_unsafe does not protect the fops handed to it
against file removal. DEFINE_DEBUGFS_ATTRIBUTE makes the fops aware of
the file lifetime and thus protects it against removal.

Signed-off-by: Rohit Sarkar <rohitsarkar5398@gmail.com>
Tested-by Nuno Sá <nuno.sa@analog.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/imu/adis16400.c

index 05e70c1..4445c24 100644 (file)
@@ -258,7 +258,7 @@ static int adis16400_show_product_id(void *arg, u64 *val)
 
        return 0;
 }
-DEFINE_SIMPLE_ATTRIBUTE(adis16400_product_id_fops,
+DEFINE_DEBUGFS_ATTRIBUTE(adis16400_product_id_fops,
        adis16400_show_product_id, NULL, "%lld\n");
 
 static int adis16400_show_flash_count(void *arg, u64 *val)
@@ -275,7 +275,7 @@ static int adis16400_show_flash_count(void *arg, u64 *val)
 
        return 0;
 }
-DEFINE_SIMPLE_ATTRIBUTE(adis16400_flash_count_fops,
+DEFINE_DEBUGFS_ATTRIBUTE(adis16400_flash_count_fops,
        adis16400_show_flash_count, NULL, "%lld\n");
 
 static int adis16400_debugfs_init(struct iio_dev *indio_dev)
@@ -283,15 +283,16 @@ static int adis16400_debugfs_init(struct iio_dev *indio_dev)
        struct adis16400_state *st = iio_priv(indio_dev);
 
        if (st->variant->flags & ADIS16400_HAS_SERIAL_NUMBER)
-               debugfs_create_file("serial_number", 0400,
-                       indio_dev->debugfs_dentry, st,
-                       &adis16400_serial_number_fops);
+               debugfs_create_file_unsafe("serial_number", 0400,
+                               indio_dev->debugfs_dentry, st,
+                               &adis16400_serial_number_fops);
        if (st->variant->flags & ADIS16400_HAS_PROD_ID)
-               debugfs_create_file("product_id", 0400,
+               debugfs_create_file_unsafe("product_id", 0400,
+                               indio_dev->debugfs_dentry, st,
+                               &adis16400_product_id_fops);
+       debugfs_create_file_unsafe("flash_count", 0400,
                        indio_dev->debugfs_dentry, st,
-                       &adis16400_product_id_fops);
-       debugfs_create_file("flash_count", 0400, indio_dev->debugfs_dentry,
-               st, &adis16400_flash_count_fops);
+                       &adis16400_flash_count_fops);
 
        return 0;
 }