]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
crypto: ccp - Use scoped guard for mutex
authorMario Limonciello <mario.limonciello@amd.com>
Tue, 3 Dec 2024 16:22:57 +0000 (10:22 -0600)
committerHerbert Xu <herbert@gondor.apana.org.au>
Sat, 14 Dec 2024 09:21:43 +0000 (17:21 +0800)
Use a scoped guard to simplify the cleanup handling.

Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/ccp/dbc.c

index 5b105a23f6997c90f3a54b38376be941f79a9665..410084a9039c98c2d316ac1d28c7fd5cf9964772 100644 (file)
@@ -7,6 +7,8 @@
  * Author: Mario Limonciello <mario.limonciello@amd.com>
  */
 
+#include <linux/mutex.h>
+
 #include "dbc.h"
 
 #define DBC_DEFAULT_TIMEOUT            (10 * MSEC_PER_SEC)
@@ -137,64 +139,49 @@ static long dbc_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
                return -ENODEV;
        dbc_dev = psp_master->dbc_data;
 
-       mutex_lock(&dbc_dev->ioctl_mutex);
+       guard(mutex)(&dbc_dev->ioctl_mutex);
 
        switch (cmd) {
        case DBCIOCNONCE:
-               if (copy_from_user(dbc_dev->payload, argp, sizeof(struct dbc_user_nonce))) {
-                       ret = -EFAULT;
-                       goto unlock;
-               }
+               if (copy_from_user(dbc_dev->payload, argp, sizeof(struct dbc_user_nonce)))
+                       return -EFAULT;
 
                ret = send_dbc_nonce(dbc_dev);
                if (ret)
-                       goto unlock;
+                       return ret;
 
-               if (copy_to_user(argp, dbc_dev->payload, sizeof(struct dbc_user_nonce))) {
-                       ret = -EFAULT;
-                       goto unlock;
-               }
+               if (copy_to_user(argp, dbc_dev->payload, sizeof(struct dbc_user_nonce)))
+                       return -EFAULT;
                break;
        case DBCIOCUID:
-               if (copy_from_user(dbc_dev->payload, argp, sizeof(struct dbc_user_setuid))) {
-                       ret = -EFAULT;
-                       goto unlock;
-               }
+               if (copy_from_user(dbc_dev->payload, argp, sizeof(struct dbc_user_setuid)))
+                       return -EFAULT;
 
                *dbc_dev->payload_size = dbc_dev->header_size + sizeof(struct dbc_user_setuid);
                ret = send_dbc_cmd(dbc_dev, PSP_DYNAMIC_BOOST_SET_UID);
                if (ret)
-                       goto unlock;
+                       return ret;
 
-               if (copy_to_user(argp, dbc_dev->payload, sizeof(struct dbc_user_setuid))) {
-                       ret = -EFAULT;
-                       goto unlock;
-               }
+               if (copy_to_user(argp, dbc_dev->payload, sizeof(struct dbc_user_setuid)))
+                       return -EFAULT;
                break;
        case DBCIOCPARAM:
-               if (copy_from_user(dbc_dev->payload, argp, sizeof(struct dbc_user_param))) {
-                       ret = -EFAULT;
-                       goto unlock;
-               }
+               if (copy_from_user(dbc_dev->payload, argp, sizeof(struct dbc_user_param)))
+                       return -EFAULT;
 
                *dbc_dev->payload_size = dbc_dev->header_size + sizeof(struct dbc_user_param);
                ret = send_dbc_parameter(dbc_dev);
                if (ret)
-                       goto unlock;
+                       return ret;
 
-               if (copy_to_user(argp, dbc_dev->payload, sizeof(struct dbc_user_param)))  {
-                       ret = -EFAULT;
-                       goto unlock;
-               }
+               if (copy_to_user(argp, dbc_dev->payload, sizeof(struct dbc_user_param)))
+                       return -EFAULT;
                break;
        default:
-               ret = -EINVAL;
-
+               return -EINVAL;
        }
-unlock:
-       mutex_unlock(&dbc_dev->ioctl_mutex);
 
-       return ret;
+       return 0;
 }
 
 static const struct file_operations dbc_fops = {