platform/surface: aggregator_cdev: Add lockdep support
authorMaximilian Luz <luzmaximilian@gmail.com>
Fri, 4 Jun 2021 13:47:54 +0000 (15:47 +0200)
committerHans de Goede <hdegoede@redhat.com>
Wed, 16 Jun 2021 15:47:53 +0000 (17:47 +0200)
Mark functions with locking requirements via the corresponding lockdep
calls for debugging and documentary purposes.

Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20210604134755.535590-7-luzmaximilian@gmail.com
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
drivers/platform/surface/surface_aggregator_cdev.c

index 7b86b36..30fb50f 100644 (file)
@@ -139,6 +139,8 @@ static int ssam_cdev_notifier_register(struct ssam_cdev_client *client, u8 tc, i
        struct ssam_cdev_notifier *nf;
        int status;
 
+       lockdep_assert_held_read(&client->cdev->lock);
+
        /* Validate notifier target category. */
        if (!ssh_rqid_is_event(rqid))
                return -EINVAL;
@@ -188,6 +190,8 @@ static int ssam_cdev_notifier_unregister(struct ssam_cdev_client *client, u8 tc)
        const u16 event = ssh_rqid_to_event(rqid);
        int status;
 
+       lockdep_assert_held_read(&client->cdev->lock);
+
        /* Validate notifier target category. */
        if (!ssh_rqid_is_event(rqid))
                return -EINVAL;
@@ -257,6 +261,8 @@ static long ssam_cdev_request(struct ssam_cdev_client *client, struct ssam_cdev_
        void __user *rspdata;
        int status = 0, ret = 0, tmp;
 
+       lockdep_assert_held_read(&client->cdev->lock);
+
        ret = copy_struct_from_user(&rqst, sizeof(rqst), r, sizeof(*r));
        if (ret)
                goto out;
@@ -367,6 +373,8 @@ static long ssam_cdev_notif_register(struct ssam_cdev_client *client,
        struct ssam_cdev_notifier_desc desc;
        long ret;
 
+       lockdep_assert_held_read(&client->cdev->lock);
+
        ret = copy_struct_from_user(&desc, sizeof(desc), d, sizeof(*d));
        if (ret)
                return ret;
@@ -380,6 +388,8 @@ static long ssam_cdev_notif_unregister(struct ssam_cdev_client *client,
        struct ssam_cdev_notifier_desc desc;
        long ret;
 
+       lockdep_assert_held_read(&client->cdev->lock);
+
        ret = copy_struct_from_user(&desc, sizeof(desc), d, sizeof(*d));
        if (ret)
                return ret;
@@ -395,6 +405,8 @@ static long ssam_cdev_event_enable(struct ssam_cdev_client *client,
        struct ssam_event_id id;
        long ret;
 
+       lockdep_assert_held_read(&client->cdev->lock);
+
        /* Read descriptor from user-space. */
        ret = copy_struct_from_user(&desc, sizeof(desc), d, sizeof(*d));
        if (ret)
@@ -421,6 +433,8 @@ static long ssam_cdev_event_disable(struct ssam_cdev_client *client,
        struct ssam_event_id id;
        long ret;
 
+       lockdep_assert_held_read(&client->cdev->lock);
+
        /* Read descriptor from user-space. */
        ret = copy_struct_from_user(&desc, sizeof(desc), d, sizeof(*d));
        if (ret)
@@ -513,6 +527,8 @@ static int ssam_cdev_device_release(struct inode *inode, struct file *filp)
 static long __ssam_cdev_device_ioctl(struct ssam_cdev_client *client, unsigned int cmd,
                                     unsigned long arg)
 {
+       lockdep_assert_held_read(&client->cdev->lock);
+
        switch (cmd) {
        case SSAM_CDEV_REQUEST:
                return ssam_cdev_request(client, (struct ssam_cdev_request __user *)arg);