Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

crypto: ccp - Use scoped guard for mutex

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>

authored by

Mario Limonciello and committed by
Herbert Xu
f1e532d0 3382c44f

+20 -33
+20 -33
drivers/crypto/ccp/dbc.c
··· 7 7 * Author: Mario Limonciello <mario.limonciello@amd.com> 8 8 */ 9 9 10 + #include <linux/mutex.h> 11 + 10 12 #include "dbc.h" 11 13 12 14 #define DBC_DEFAULT_TIMEOUT (10 * MSEC_PER_SEC) ··· 139 137 return -ENODEV; 140 138 dbc_dev = psp_master->dbc_data; 141 139 142 - mutex_lock(&dbc_dev->ioctl_mutex); 140 + guard(mutex)(&dbc_dev->ioctl_mutex); 143 141 144 142 switch (cmd) { 145 143 case DBCIOCNONCE: 146 - if (copy_from_user(dbc_dev->payload, argp, sizeof(struct dbc_user_nonce))) { 147 - ret = -EFAULT; 148 - goto unlock; 149 - } 144 + if (copy_from_user(dbc_dev->payload, argp, sizeof(struct dbc_user_nonce))) 145 + return -EFAULT; 150 146 151 147 ret = send_dbc_nonce(dbc_dev); 152 148 if (ret) 153 - goto unlock; 149 + return ret; 154 150 155 - if (copy_to_user(argp, dbc_dev->payload, sizeof(struct dbc_user_nonce))) { 156 - ret = -EFAULT; 157 - goto unlock; 158 - } 151 + if (copy_to_user(argp, dbc_dev->payload, sizeof(struct dbc_user_nonce))) 152 + return -EFAULT; 159 153 break; 160 154 case DBCIOCUID: 161 - if (copy_from_user(dbc_dev->payload, argp, sizeof(struct dbc_user_setuid))) { 162 - ret = -EFAULT; 163 - goto unlock; 164 - } 155 + if (copy_from_user(dbc_dev->payload, argp, sizeof(struct dbc_user_setuid))) 156 + return -EFAULT; 165 157 166 158 *dbc_dev->payload_size = dbc_dev->header_size + sizeof(struct dbc_user_setuid); 167 159 ret = send_dbc_cmd(dbc_dev, PSP_DYNAMIC_BOOST_SET_UID); 168 160 if (ret) 169 - goto unlock; 161 + return ret; 170 162 171 - if (copy_to_user(argp, dbc_dev->payload, sizeof(struct dbc_user_setuid))) { 172 - ret = -EFAULT; 173 - goto unlock; 174 - } 163 + if (copy_to_user(argp, dbc_dev->payload, sizeof(struct dbc_user_setuid))) 164 + return -EFAULT; 175 165 break; 176 166 case DBCIOCPARAM: 177 - if (copy_from_user(dbc_dev->payload, argp, sizeof(struct dbc_user_param))) { 178 - ret = -EFAULT; 179 - goto unlock; 180 - } 167 + if (copy_from_user(dbc_dev->payload, argp, sizeof(struct dbc_user_param))) 168 + return -EFAULT; 181 169 182 170 *dbc_dev->payload_size = dbc_dev->header_size + sizeof(struct dbc_user_param); 183 171 ret = send_dbc_parameter(dbc_dev); 184 172 if (ret) 185 - goto unlock; 173 + return ret; 186 174 187 - if (copy_to_user(argp, dbc_dev->payload, sizeof(struct dbc_user_param))) { 188 - ret = -EFAULT; 189 - goto unlock; 190 - } 175 + if (copy_to_user(argp, dbc_dev->payload, sizeof(struct dbc_user_param))) 176 + return -EFAULT; 191 177 break; 192 178 default: 193 - ret = -EINVAL; 194 - 179 + return -EINVAL; 195 180 } 196 - unlock: 197 - mutex_unlock(&dbc_dev->ioctl_mutex); 198 181 199 - return ret; 182 + return 0; 200 183 } 201 184 202 185 static const struct file_operations dbc_fops = {