Re: [PATCH 1 24/25] hpsa: add in sas transport class

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> On Oct 30, 2015, at 5:00 PM, Don Brace <brace77070@xxxxxxxxx> wrote:
> On 10/30/2015 03:07 PM, Matthew R. Ochs wrote:
>>> On Oct 28, 2015, at 5:06 PM, Don Brace <don.brace@xxxxxxxx> wrote:
>>> 
>>> From: Kevin Barnett <kevin.barnett@xxxxxxxx>
>>> 
>>> Reviewed-by: Scott Teel <scott.teel@xxxxxxxx>
>>> Reviewed-by: Justin Lindley <justin.lindley@xxxxxxxx>
>>> Reviewed-by: Kevin Barnett <kevin.barnett@xxxxxxxx>
>>> Signed-off-by: Don Brace <don.brace@xxxxxxxx>
>>> ---
>>> drivers/scsi/hpsa.c     |  535 +++++++++++++++++++++++++++++++++++++++++++++--
>>> drivers/scsi/hpsa.h     |   27 ++
>>> drivers/scsi/hpsa_cmd.h |   14 +
>>> 3 files changed, 555 insertions(+), 21 deletions(-)
>>> 
>>> diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
>>> index 56526312..ca38a00 100644
>>> --- a/drivers/scsi/hpsa.c
>>> +++ b/drivers/scsi/hpsa.c
>>> @@ -41,6 +41,7 @@
>>> 
>>> +static u64 hpsa_get_sas_address_from_report_physical(struct ctlr_info *h,
>>> +						unsigned char *scsi3addr)
>>> +{
>>> +	struct ReportExtendedLUNdata *physdev;
>>> +	u32 nphysicals;
>>> +	u64 sa = 0;
>>> +	int i;
>>> +
>>> +	physdev = kzalloc(sizeof(*physdev), GFP_KERNEL);
>>> +	if (!physdev)
>>> +		return 0;
>>> +
>>> +	if (hpsa_scsi_do_report_phys_luns(h, physdev, sizeof(*physdev))) {
>>> +		dev_err(&h->pdev->dev, "report physical LUNs failed.\n");
>>> +		kfree(physdev);
>>> +		return 0;
>>> +	}
>>> +	nphysicals = get_unaligned_be32(physdev->LUNListLength) / 24;
>>> +
>>> +	for (i = 0; i < nphysicals; i++)
>>> +		if (!memcmp(&physdev->LUN[i].lunid[0], scsi3addr, 8))
>>> +			sa = get_unaligned_be64(&physdev->LUN[i].wwid[0]);
>> Don't you want to break out here if you found a match?
> Agreed.
>> 
>>> +
>>> +	kfree(physdev);
>>> +
>>> +	return sa;
>>> +}
>>> +
>>> +static void hpsa_get_sas_address(struct ctlr_info *h, unsigned char *scsi3addr,
>>> +					struct hpsa_scsi_dev_t *dev)
>>> +{
>>> +	int rc;
>>> +	u64 sa = 0;
>>> +
>>> +	if (is_hba_lunid(scsi3addr)) {
>>> +		struct bmic_sense_subsystem_info *ssi;
>>> +
>>> +		ssi = kzalloc(sizeof(*ssi), GFP_KERNEL);
>> What happens if this allocation fails? If the I/O can succeed without the
>> DMA buffer then you will run into trouble when deriving sa.
> Added check for NULL.

With these changes

Reviewed-by: Matthew R. Ochs <mrochs@xxxxxxxxxxxxxxxxxx>

--
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



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux