On 08/01/2014 08:31 AM, Hannes Reinecke wrote: > On 08/01/2014 12:32 AM, Mike Christie wrote: >> On 07/30/2014 07:50 AM, Hannes Reinecke wrote: >>> On 07/12/2014 10:51 PM, michaelc@xxxxxxxxxxx wrote: >>>> From: Mike Christie <michaelc@xxxxxxxxxxx> >>>> >>>> iscsi_get_host_stats was dropping the error code returned >>>> by drivers like qla4xxx. >>>> >>>> Signed-off-by: Mike Christie <michaelc@xxxxxxxxxxx> >>>> --- >>>> drivers/scsi/scsi_transport_iscsi.c | 4 ++++ >>>> 1 files changed, 4 insertions(+), 0 deletions(-) >>>> >>>> diff --git a/drivers/scsi/scsi_transport_iscsi.c >>>> b/drivers/scsi/scsi_transport_iscsi.c >>>> index b481e62..14bfa53 100644 >>>> --- a/drivers/scsi/scsi_transport_iscsi.c >>>> +++ b/drivers/scsi/scsi_transport_iscsi.c >>>> @@ -3467,6 +3467,10 @@ iscsi_get_host_stats(struct iscsi_transport >>>> *transport, struct nlmsghdr *nlh) >>>> memset(buf, 0, host_stats_size); >>>> >>>> err = transport->get_host_stats(shost, buf, >>>> host_stats_size); >>>> + if (err) { >>>> + kfree(skbhost_stats); >>>> + goto exit_host_stats; >>>> + } >>>> >>>> actual_size = nlmsg_total_size(sizeof(*ev) + >>>> host_stats_size); >>>> skb_trim(skbhost_stats, NLMSG_ALIGN(actual_size)); >>>> >>> What happens with the skbhost_stats allocated earlier? Shouldn't it be >>> freed here, too? >>> >> >> You mean for this success path right. It is not freed here by the iscsi >> code on purpose. For the code path here where we have successfully >> called into the driver then a couple lines below we will do >> >> iscsi_multicast_skb() -> nlmsg_multicast() >> >> which will pass the skbhost_stats skb to the netlink layer. The >> netlink/socket/skb code then frees it when it is done with it. >> > No, I meant the failure path. > > You do an alloc_skb above, then get_host_stats failed, and you exit the > function without freeing the skb. Ah, actually I am freeing it, but I now realize with the wrong function, so I think that is why I was confused by your comment. Above I added a kfree() of the skb. I should be using kfree_skb. Will fix it up. Thanks. -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html