aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/fcoe/fcoe.c
diff options
context:
space:
mode:
authorNeerav Parikh <Neerav.Parikh@intel.com>2013-05-18 01:12:28 -0400
committerRobert Love <robert.w.love@intel.com>2013-07-09 12:29:17 -0400
commitf07d46bbc9ba9a08b338dec7bb858977d4d822fb (patch)
tree8b92eff8a65ef21f4abc86abb8132e5fccb1f7ff /drivers/scsi/fcoe/fcoe.c
parente0335f67a281cb8eb11868e614ee9390fbbe9b1d (diff)
fcoe: Fix smatch warning in fcoe_fdmi_info function
This patch fixes a smatch warning as below: smatch warnings: drivers/scsi/fcoe/fcoe.c:782 fcoe_fdmi_info() warn: 'fdmi' puts 896 bytes on stack Reported-by: Fengguang Wu <fengguang.wu@intel.com> Signed-off-by: Neerav Parikh <Neerav.Parikh@intel.com> Tested-by: Jack Morgan <jack.morgan@intel.com> Signed-off-by: Robert Love <robert.w.love@intel.com>
Diffstat (limited to 'drivers/scsi/fcoe/fcoe.c')
-rw-r--r--drivers/scsi/fcoe/fcoe.c26
1 files changed, 15 insertions, 11 deletions
diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c
index 32ae6c67ea3a..3336e5754930 100644
--- a/drivers/scsi/fcoe/fcoe.c
+++ b/drivers/scsi/fcoe/fcoe.c
@@ -774,7 +774,6 @@ static void fcoe_fdmi_info(struct fc_lport *lport, struct net_device *netdev)
774 struct fcoe_port *port; 774 struct fcoe_port *port;
775 struct net_device *realdev; 775 struct net_device *realdev;
776 int rc; 776 int rc;
777 struct netdev_fcoe_hbainfo fdmi;
778 777
779 port = lport_priv(lport); 778 port = lport_priv(lport);
780 fcoe = port->priv; 779 fcoe = port->priv;
@@ -788,9 +787,13 @@ static void fcoe_fdmi_info(struct fc_lport *lport, struct net_device *netdev)
788 return; 787 return;
789 788
790 if (realdev->netdev_ops->ndo_fcoe_get_hbainfo) { 789 if (realdev->netdev_ops->ndo_fcoe_get_hbainfo) {
791 memset(&fdmi, 0, sizeof(fdmi)); 790 struct netdev_fcoe_hbainfo *fdmi;
791 fdmi = kzalloc(sizeof(*fdmi), GFP_KERNEL);
792 if (!fdmi)
793 return;
794
792 rc = realdev->netdev_ops->ndo_fcoe_get_hbainfo(realdev, 795 rc = realdev->netdev_ops->ndo_fcoe_get_hbainfo(realdev,
793 &fdmi); 796 fdmi);
794 if (rc) { 797 if (rc) {
795 printk(KERN_INFO "fcoe: Failed to retrieve FDMI " 798 printk(KERN_INFO "fcoe: Failed to retrieve FDMI "
796 "information from netdev.\n"); 799 "information from netdev.\n");
@@ -800,38 +803,39 @@ static void fcoe_fdmi_info(struct fc_lport *lport, struct net_device *netdev)
800 snprintf(fc_host_serial_number(lport->host), 803 snprintf(fc_host_serial_number(lport->host),
801 FC_SERIAL_NUMBER_SIZE, 804 FC_SERIAL_NUMBER_SIZE,
802 "%s", 805 "%s",
803 fdmi.serial_number); 806 fdmi->serial_number);
804 snprintf(fc_host_manufacturer(lport->host), 807 snprintf(fc_host_manufacturer(lport->host),
805 FC_SERIAL_NUMBER_SIZE, 808 FC_SERIAL_NUMBER_SIZE,
806 "%s", 809 "%s",
807 fdmi.manufacturer); 810 fdmi->manufacturer);
808 snprintf(fc_host_model(lport->host), 811 snprintf(fc_host_model(lport->host),
809 FC_SYMBOLIC_NAME_SIZE, 812 FC_SYMBOLIC_NAME_SIZE,
810 "%s", 813 "%s",
811 fdmi.model); 814 fdmi->model);
812 snprintf(fc_host_model_description(lport->host), 815 snprintf(fc_host_model_description(lport->host),
813 FC_SYMBOLIC_NAME_SIZE, 816 FC_SYMBOLIC_NAME_SIZE,
814 "%s", 817 "%s",
815 fdmi.model_description); 818 fdmi->model_description);
816 snprintf(fc_host_hardware_version(lport->host), 819 snprintf(fc_host_hardware_version(lport->host),
817 FC_VERSION_STRING_SIZE, 820 FC_VERSION_STRING_SIZE,
818 "%s", 821 "%s",
819 fdmi.hardware_version); 822 fdmi->hardware_version);
820 snprintf(fc_host_driver_version(lport->host), 823 snprintf(fc_host_driver_version(lport->host),
821 FC_VERSION_STRING_SIZE, 824 FC_VERSION_STRING_SIZE,
822 "%s", 825 "%s",
823 fdmi.driver_version); 826 fdmi->driver_version);
824 snprintf(fc_host_optionrom_version(lport->host), 827 snprintf(fc_host_optionrom_version(lport->host),
825 FC_VERSION_STRING_SIZE, 828 FC_VERSION_STRING_SIZE,
826 "%s", 829 "%s",
827 fdmi.optionrom_version); 830 fdmi->optionrom_version);
828 snprintf(fc_host_firmware_version(lport->host), 831 snprintf(fc_host_firmware_version(lport->host),
829 FC_VERSION_STRING_SIZE, 832 FC_VERSION_STRING_SIZE,
830 "%s", 833 "%s",
831 fdmi.firmware_version); 834 fdmi->firmware_version);
832 835
833 /* Enable FDMI lport states */ 836 /* Enable FDMI lport states */
834 lport->fdmi_enabled = 1; 837 lport->fdmi_enabled = 1;
838 kfree(fdmi);
835 } else { 839 } else {
836 lport->fdmi_enabled = 0; 840 lport->fdmi_enabled = 0;
837 printk(KERN_INFO "fcoe: No FDMI support.\n"); 841 printk(KERN_INFO "fcoe: No FDMI support.\n");