mirror of
https://kernel.googlesource.com/pub/scm/linux/kernel/git/stable/linux-stable.git
synced 2025-09-13 11:07:46 +10:00
drm/msm: Defer fd_install in SUBMIT ioctl
[ Upstream commitf22853435b
] Avoid fd_install() until there are no more potential error paths, to avoid put_unused_fd() after the fd is made visible to userspace. Fixes:68dc6c2d5e
("drm/msm: Fix submit error-path leaks") Reported-by: Dan Carpenter <dan.carpenter@linaro.org> Signed-off-by: Rob Clark <robin.clark@oss.qualcomm.com> Patchwork: https://patchwork.freedesktop.org/patch/665363/ Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
ecbc060f34
commit
5fc3883a88
@ -929,12 +929,8 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data,
|
||||
|
||||
if (ret == 0 && args->flags & MSM_SUBMIT_FENCE_FD_OUT) {
|
||||
sync_file = sync_file_create(submit->user_fence);
|
||||
if (!sync_file) {
|
||||
if (!sync_file)
|
||||
ret = -ENOMEM;
|
||||
} else {
|
||||
fd_install(out_fence_fd, sync_file->file);
|
||||
args->fence_fd = out_fence_fd;
|
||||
}
|
||||
}
|
||||
|
||||
submit_attach_object_fences(submit);
|
||||
@ -959,10 +955,14 @@ out:
|
||||
out_unlock:
|
||||
mutex_unlock(&queue->lock);
|
||||
out_post_unlock:
|
||||
if (ret && (out_fence_fd >= 0)) {
|
||||
put_unused_fd(out_fence_fd);
|
||||
if (ret) {
|
||||
if (out_fence_fd >= 0)
|
||||
put_unused_fd(out_fence_fd);
|
||||
if (sync_file)
|
||||
fput(sync_file->file);
|
||||
} else if (sync_file) {
|
||||
fd_install(out_fence_fd, sync_file->file);
|
||||
args->fence_fd = out_fence_fd;
|
||||
}
|
||||
|
||||
if (!IS_ERR_OR_NULL(submit)) {
|
||||
|
Loading…
Reference in New Issue
Block a user