[media] s5p-fimc: Convert m2m driver to unlocked_ioctl

Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>

authored by Sylwester Nawrocki and committed by Mauro Carvalho Chehab 69e05e83 aee7126c

+16 -6
+16 -6
drivers/media/video/s5p-fimc/fimc-core.c
··· 983 983 { 984 984 struct fimc_ctx *ctx = priv; 985 985 struct v4l2_queryctrl *c; 986 + int ret = -EINVAL; 986 987 987 988 c = get_ctrl(qc->id); 988 989 if (c) { ··· 991 990 return 0; 992 991 } 993 992 994 - if (ctx->state & FIMC_CTX_CAP) 995 - return v4l2_subdev_call(ctx->fimc_dev->vid_cap.sd, 993 + if (ctx->state & FIMC_CTX_CAP) { 994 + if (mutex_lock_interruptible(&ctx->fimc_dev->lock)) 995 + return -ERESTARTSYS; 996 + ret = v4l2_subdev_call(ctx->fimc_dev->vid_cap.sd, 996 997 core, queryctrl, qc); 997 - return -EINVAL; 998 + mutex_unlock(&ctx->fimc_dev->lock); 999 + } 1000 + return ret; 998 1001 } 999 1002 1000 1003 int fimc_vidioc_g_ctrl(struct file *file, void *priv, ··· 1238 1233 f = (cr->type == V4L2_BUF_TYPE_VIDEO_OUTPUT) ? 1239 1234 &ctx->s_frame : &ctx->d_frame; 1240 1235 1236 + if (mutex_lock_interruptible(&fimc->lock)) 1237 + return -ERESTARTSYS; 1238 + 1241 1239 spin_lock_irqsave(&ctx->slock, flags); 1242 1240 if (~ctx->state & (FIMC_SRC_FMT | FIMC_DST_FMT)) { 1243 1241 /* Check to see if scaling ratio is within supported range */ ··· 1249 1241 else 1250 1242 ret = fimc_check_scaler_ratio(&cr->c, &ctx->s_frame); 1251 1243 if (ret) { 1252 - spin_unlock_irqrestore(&ctx->slock, flags); 1253 1244 v4l2_err(&fimc->m2m.v4l2_dev, "Out of scaler range"); 1254 - return -EINVAL; 1245 + ret = -EINVAL; 1246 + goto scr_unlock; 1255 1247 } 1256 1248 } 1257 1249 ctx->state |= FIMC_PARAMS; ··· 1261 1253 f->width = cr->c.width; 1262 1254 f->height = cr->c.height; 1263 1255 1256 + scr_unlock: 1264 1257 spin_unlock_irqrestore(&ctx->slock, flags); 1258 + mutex_unlock(&fimc->lock); 1265 1259 return 0; 1266 1260 } 1267 1261 ··· 1406 1396 .open = fimc_m2m_open, 1407 1397 .release = fimc_m2m_release, 1408 1398 .poll = fimc_m2m_poll, 1409 - .ioctl = video_ioctl2, 1399 + .unlocked_ioctl = video_ioctl2, 1410 1400 .mmap = fimc_m2m_mmap, 1411 1401 }; 1412 1402