mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-16 05:26:07 +00:00
[SCSI] bfa: don't leak mem in bfad_im_bsg_els_ct_request()
If 'drv_fcxp = kzalloc(sizeof(struct bfad_fcxp), GFP_KERNEL);' fails and returns NULL, then we'll leak the memory allocated to 'bsg_fcpt' when we jump to 'out:' and the variable subsequently goes out of scope. Also remove the cast of the kzalloc() return value. kzalloc() returns a void* which is implicitly converted, so the explicit cast is pointless. Signed-off-by: Jesper Juhl <jj@chaosbits.net> Acked-by: Krishna Gudipati <kgudipat@brocade.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
parent
e5cc6aa4b6
commit
64b8aa75bc
@ -3047,8 +3047,7 @@ bfad_im_bsg_els_ct_request(struct fc_bsg_job *job)
|
|||||||
* Allocate buffer for bsg_fcpt and do a copy_from_user op for payload
|
* Allocate buffer for bsg_fcpt and do a copy_from_user op for payload
|
||||||
* buffer of size bsg_data->payload_len
|
* buffer of size bsg_data->payload_len
|
||||||
*/
|
*/
|
||||||
bsg_fcpt = (struct bfa_bsg_fcpt_s *)
|
bsg_fcpt = kzalloc(bsg_data->payload_len, GFP_KERNEL);
|
||||||
kzalloc(bsg_data->payload_len, GFP_KERNEL);
|
|
||||||
if (!bsg_fcpt)
|
if (!bsg_fcpt)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
@ -3060,6 +3059,7 @@ bfad_im_bsg_els_ct_request(struct fc_bsg_job *job)
|
|||||||
|
|
||||||
drv_fcxp = kzalloc(sizeof(struct bfad_fcxp), GFP_KERNEL);
|
drv_fcxp = kzalloc(sizeof(struct bfad_fcxp), GFP_KERNEL);
|
||||||
if (drv_fcxp == NULL) {
|
if (drv_fcxp == NULL) {
|
||||||
|
kfree(bsg_fcpt);
|
||||||
rc = -ENOMEM;
|
rc = -ENOMEM;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user