hpsa: fix memory leak in hpsa_hba_mode_enabled
authorJoe Handzik <joseph.t.handzik@hp.com>
Thu, 15 May 2014 20:44:42 +0000 (15:44 -0500)
committerChristoph Hellwig <hch@lst.de>
Mon, 19 May 2014 17:12:28 +0000 (19:12 +0200)
And while we're at it fix a magic number

Signed-off-by: Joe Handzik <joseph.t.handzik@hp.com>
Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
drivers/scsi/hpsa.c
drivers/scsi/hpsa.h

index ef669054aba5560180aed0220841e121a08d8141..7eb3b9a78537215fb5da52d7fb94dafd8ee02e31 100644 (file)
@@ -2977,6 +2977,7 @@ u8 *figure_lunaddrbytes(struct ctlr_info *h, int raid_ctlr_position, int i,
 static int hpsa_hba_mode_enabled(struct ctlr_info *h)
 {
        int rc;
+       int hba_mode_enabled;
        struct bmic_controller_parameters *ctlr_params;
        ctlr_params = kzalloc(sizeof(struct bmic_controller_parameters),
                GFP_KERNEL);
@@ -2989,7 +2990,11 @@ static int hpsa_hba_mode_enabled(struct ctlr_info *h)
                kfree(ctlr_params);
                return 0;
        }
-       return ctlr_params->nvram_flags & (1 << 3) ? 1 : 0;
+
+       hba_mode_enabled =
+               ((ctlr_params->nvram_flags & HBA_MODE_ENABLED_FLAG) != 0);
+       kfree(ctlr_params);
+       return hba_mode_enabled;
 }
 
 static void hpsa_update_scsi_devices(struct ctlr_info *h, int hostno)
index 44235a27e1b6d0541a78c1442bfdda4794caabb5..1e3cf33a82cf12750fa9336e087774dcb7c5becd 100644 (file)
@@ -90,6 +90,7 @@ struct bmic_controller_parameters {
        u8   automatic_drive_slamming;
        u8   reserved1;
        u8   nvram_flags;
+#define HBA_MODE_ENABLED_FLAG (1 << 3)
        u8   cache_nvram_flags;
        u8   drive_config_flags;
        u16  reserved2;