diff options
| author | Paolo Bonzini <[email protected]> | 2024-11-14 12:06:24 +0000 |
|---|---|---|
| committer | Paolo Bonzini <[email protected]> | 2024-11-14 12:06:24 +0000 |
| commit | 0586ade9e7f9491ccbe1e00975978cb9c2093006 (patch) | |
| tree | 3dbb536e37d3e86086bd51dcee4bf81041bac087 /drivers/media/v4l2-core/v4l2-ctrls-api.c | |
| parent | Merge tag 'kvmarm-6.13' of https://git.kernel.org/pub/scm/linux/kernel/git/kv... (diff) | |
| parent | irqchip/loongson-eiointc: Add virt extension support (diff) | |
| download | kernel-0586ade9e7f9491ccbe1e00975978cb9c2093006.tar.gz kernel-0586ade9e7f9491ccbe1e00975978cb9c2093006.zip | |
Merge tag 'loongarch-kvm-6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson into HEAD
LoongArch KVM changes for v6.13
1. Add iocsr and mmio bus simulation in kernel.
2. Add in-kernel interrupt controller emulation.
3. Add virt extension support for eiointc irqchip.
Diffstat (limited to 'drivers/media/v4l2-core/v4l2-ctrls-api.c')
| -rw-r--r-- | drivers/media/v4l2-core/v4l2-ctrls-api.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/drivers/media/v4l2-core/v4l2-ctrls-api.c b/drivers/media/v4l2-core/v4l2-ctrls-api.c index e5a364efd5e6..95a2202879d8 100644 --- a/drivers/media/v4l2-core/v4l2-ctrls-api.c +++ b/drivers/media/v4l2-core/v4l2-ctrls-api.c @@ -753,9 +753,10 @@ static int get_ctrl(struct v4l2_ctrl *ctrl, struct v4l2_ext_control *c) for (i = 0; i < master->ncontrols; i++) cur_to_new(master->cluster[i]); ret = call_op(master, g_volatile_ctrl); - new_to_user(c, ctrl); + if (!ret) + ret = new_to_user(c, ctrl); } else { - cur_to_user(c, ctrl); + ret = cur_to_user(c, ctrl); } v4l2_ctrl_unlock(master); return ret; @@ -770,7 +771,10 @@ int v4l2_g_ctrl(struct v4l2_ctrl_handler *hdl, struct v4l2_control *control) if (!ctrl || !ctrl->is_int) return -EINVAL; ret = get_ctrl(ctrl, &c); - control->value = c.value; + + if (!ret) + control->value = c.value; + return ret; } EXPORT_SYMBOL(v4l2_g_ctrl); @@ -811,10 +815,11 @@ static int set_ctrl_lock(struct v4l2_fh *fh, struct v4l2_ctrl *ctrl, int ret; v4l2_ctrl_lock(ctrl); - user_to_new(c, ctrl); - ret = set_ctrl(fh, ctrl, 0); + ret = user_to_new(c, ctrl); + if (!ret) + ret = set_ctrl(fh, ctrl, 0); if (!ret) - cur_to_user(c, ctrl); + ret = cur_to_user(c, ctrl); v4l2_ctrl_unlock(ctrl); return ret; } |
