projects
/
linux.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
0f097f0
)
IB/hfi1: Restore allocated resources on failed copyout
author
Dean Luick
<dean.luick@cornelisnetworks.com>
Thu, 12 Jan 2023 18:16:02 +0000
(13:16 -0500)
committer
Leon Romanovsky
<leon@kernel.org>
Sun, 22 Jan 2023 10:42:24 +0000
(12:42 +0200)
Fix a resource leak if an error occurs.
Fixes: f404ca4c7ea8 ("IB/hfi1: Refactor hfi_user_exp_rcv_setup() IOCTL")
Signed-off-by: Dean Luick <dean.luick@cornelisnetworks.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
Link:
https://lore.kernel.org/r/167354736291.2132367.10894218740150168180.stgit@awfm-02.cornelisnetworks.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/hw/hfi1/file_ops.c
patch
|
blob
|
history
diff --git
a/drivers/infiniband/hw/hfi1/file_ops.c
b/drivers/infiniband/hw/hfi1/file_ops.c
index f5f9269fdc16276242e4ddd38dfa4541d8ecc866..7c5d487ec9168e290af4fb32e60731635c5fcf4e 100644
(file)
--- a/
drivers/infiniband/hw/hfi1/file_ops.c
+++ b/
drivers/infiniband/hw/hfi1/file_ops.c
@@
-1318,12
+1318,15
@@
static int user_exp_rcv_setup(struct hfi1_filedata *fd, unsigned long arg,
addr = arg + offsetof(struct hfi1_tid_info, tidcnt);
if (copy_to_user((void __user *)addr, &tinfo.tidcnt,
sizeof(tinfo.tidcnt)))
- ret
urn
-EFAULT;
+ ret
=
-EFAULT;
addr = arg + offsetof(struct hfi1_tid_info, length);
- if (copy_to_user((void __user *)addr, &tinfo.length,
+ if (
!ret &&
copy_to_user((void __user *)addr, &tinfo.length,
sizeof(tinfo.length)))
ret = -EFAULT;
+
+ if (ret)
+ hfi1_user_exp_rcv_invalid(fd, &tinfo);
}
return ret;