diff options
author | Geyslan G. Bem <geyslan@gmail.com> | 2013-11-18 16:42:57 -0300 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2013-12-19 07:39:04 -0800 |
commit | 0e7c60cb8cd7b0250b1cf40012e5015c90bb89db (patch) | |
tree | 5f12164138300488b75e3d69d96406691ae65c3e /drivers/scsi/be2iscsi/be_iscsi.c | |
parent | 6634ff7ca245bf2c0738cf21b545a35470ac7fe0 (diff) | |
download | linux-0e7c60cb8cd7b0250b1cf40012e5015c90bb89db.tar.gz linux-0e7c60cb8cd7b0250b1cf40012e5015c90bb89db.tar.bz2 linux-0e7c60cb8cd7b0250b1cf40012e5015c90bb89db.zip |
[SCSI] be2iscsi: fix memory leak in error path
There are two memory leaks in cases 'ISCSI_NET_PARAM_VLAN_ID' and
'ISCSI_NET_PARAM_VLAN_PRIORITY' and also a potential junk pointer free if
mgmt_get_if_info() returns error because if_info will be unset and it is stack
allocated.
Signed-off-by: Geyslan G. Bem <geyslan@gmail.com>
Cc: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/be2iscsi/be_iscsi.c')
-rw-r--r-- | drivers/scsi/be2iscsi/be_iscsi.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/drivers/scsi/be2iscsi/be_iscsi.c b/drivers/scsi/be2iscsi/be_iscsi.c index ffadbee0b4d9..889066d9d6fb 100644 --- a/drivers/scsi/be2iscsi/be_iscsi.c +++ b/drivers/scsi/be2iscsi/be_iscsi.c @@ -541,10 +541,8 @@ static int be2iscsi_get_if_param(struct beiscsi_hba *phba, ip_type = BE2_IPV6; len = mgmt_get_if_info(phba, ip_type, &if_info); - if (len) { - kfree(if_info); + if (len) return len; - } switch (param) { case ISCSI_NET_PARAM_IPV4_ADDR: @@ -569,7 +567,7 @@ static int be2iscsi_get_if_param(struct beiscsi_hba *phba, break; case ISCSI_NET_PARAM_VLAN_ID: if (if_info->vlan_priority == BEISCSI_VLAN_DISABLE) - return -EINVAL; + len = -EINVAL; else len = sprintf(buf, "%d\n", (if_info->vlan_priority & @@ -577,7 +575,7 @@ static int be2iscsi_get_if_param(struct beiscsi_hba *phba, break; case ISCSI_NET_PARAM_VLAN_PRIORITY: if (if_info->vlan_priority == BEISCSI_VLAN_DISABLE) - return -EINVAL; + len = -EINVAL; else len = sprintf(buf, "%d\n", ((if_info->vlan_priority >> 13) & |