aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMuhammad Usama Anjum <[email protected]>2021-04-01 17:54:43 +0900
committerSteve French <[email protected]>2021-05-10 19:15:35 -0500
commitc250e8f5566f2e1a0ea177837520eff8e59c0b7d (patch)
treedd2bef477a5f807ab414d2982ab1599284677318
parent5da64d8784d36c0601743a5159a598f5888089c7 (diff)
cifsd: fix memory leak when loop ends
Memory is being allocated and if veto_list is zero, the loop breaks without cleaning up the allocated memory. In this patch, the length check has been moved before allocation. If loop breaks, the memory isn't allocated in the first place. Thus the memory is being protected from leaking. Reported-by: coverity-bot <[email protected]> Addresses-Coverity-ID: 1503590 ("Resource leaks") Signed-off-by: Muhammad Usama Anjum <[email protected]> Signed-off-by: Namjae Jeon <[email protected]> Signed-off-by: Steve French <[email protected]>
-rw-r--r--fs/cifsd/mgmt/share_config.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/fs/cifsd/mgmt/share_config.c b/fs/cifsd/mgmt/share_config.c
index db780febd692..b2bd789af945 100644
--- a/fs/cifsd/mgmt/share_config.c
+++ b/fs/cifsd/mgmt/share_config.c
@@ -92,14 +92,14 @@ static int parse_veto_list(struct ksmbd_share_config *share,
while (veto_list_sz > 0) {
struct ksmbd_veto_pattern *p;
- p = kzalloc(sizeof(struct ksmbd_veto_pattern), GFP_KERNEL);
- if (!p)
- return -ENOMEM;
-
sz = strlen(veto_list);
if (!sz)
break;
+ p = kzalloc(sizeof(struct ksmbd_veto_pattern), GFP_KERNEL);
+ if (!p)
+ return -ENOMEM;
+
p->pattern = kstrdup(veto_list, GFP_KERNEL);
if (!p->pattern) {
ksmbd_free(p);