SCSI fixes for 3.18-rc6
Subsystems (2)
James Bottomley
maintainerThis is a set of ten fixes: 8 for UFS including four static checker warnings, a potential null deref in the voltage regulator code, a race on module unload, a ref counting fix on the well known LUNs which made it impossible to remove the ufs module and fix to correct the information in pwr_info. In addition to UFS, there's a blacklist for the Intel Multi-Flex array which chokes on report supported operation codes and a fix to an oops in bnx2fc caused by shared skbs.
The patch is available here:
git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git scsi-fixes
The short changelog is:
Akinobu Mita (3):
ufs: fix NULL dereference when no regulators are defined
ufs: ensure clk gating work is finished before module unloading
ufs: fix reference counting of W-LUs
Christian Sünkenberg (1):
scsi: add Intel Multi-Flex to scsi scan blacklist
Dolev Raviv (4):
scsi: ufs: fix static checker warning in ufshcd_parse_clock_info
scsi: ufs: fix static checker warning in __ufshcd_setup_clocks
scsi: ufs: fix static checker warning in ufshcd_populate_vreg
scsi: ufs: fix static checker errors in ufshcd_system_suspend
Maurizio Lombardi (1):
bnx2fc: do not add shared skbs to the fcoe_rx_list
Yaniv Gardi (1):
ufs: fix power info after link start-up
and the diffstat:
drivers/scsi/bnx2fc/bnx2fc_fcoe.c | 7 +++ drivers/scsi/scsi_devinfo.c | 1 + drivers/scsi/ufs/ufshcd-pltfrm.c | 15 ++---- drivers/scsi/ufs/ufshcd.c | 104 +++++++++++++++++++++++--------------- drivers/scsi/ufs/ufshcd.h | 2 - 5 files changed, 77 insertions(+), 52 deletions(-)
With full diff below.
James
---
drivers/scsi/bnx2fc/bnx2fc_fcoe.c +7 -0
@@ -412,6 +412,7 @@ static int bnx2fc_rcv(struct sk_buff *skb, struct net_device *dev,struct fc_frame_header *fh;struct fcoe_rcv_info *fr;struct fcoe_percpu_s *bg; +struct sk_buff *tmp_skb;unsigned short oxid; interface = container_of(ptype, struct bnx2fc_interface,
@@ -424,6 +425,12 @@ static int bnx2fc_rcv(struct sk_buff *skb, struct net_device *dev, goto err; } + tmp_skb =skb_share_check (skb,GFP_ATOMIC ); +if (!tmp_skb) + goto err; + + skb = tmp_skb; +if (unlikely (eth_hdr (skb)->h_proto !=htons (ETH_P_FCOE ))) { printk(KERN_ERR PFX "bnx2fc_rcv: Wrong FC type frame\n"); goto err;
drivers/scsi/scsi_devinfo.c +1 -0
@@ -202,6 +202,7 @@ static struct { {"IOMEGA", "Io20S *F", NULL, BLIST_KEY}, {"INSITE", "Floptical F*8I", NULL, BLIST_KEY}, {"INSITE", "I325VM", NULL, BLIST_KEY}, + {"Intel", "Multi-Flex", NULL, BLIST_NO_RSOC}, {"iRiver", "iFP Mass Driver", NULL, BLIST_NOT_LOCKABLE | BLIST_INQUIRY_36}, {"LASOUND", "CDX7405", "3.10", BLIST_MAX5LUN | BLIST_SINGLELUN}, {"MATSHITA", "PD-1", NULL, BLIST_FORCELUN | BLIST_SINGLELUN},
drivers/scsi/ufs/ufshcd-pltfrm.c +5 -10
@@ -102,7 +102,6 @@ static int ufshcd_parse_clock_info(struct ufs_hba *hba) clkfreq =devm_kzalloc (dev, sz *sizeof (*clkfreq),GFP_KERNEL );if (!clkfreq) { -dev_err (dev,"%s: no memory\n" ,"freq-table-hz" ); ret = -ENOMEM ; goto out; }
@@ -112,19 +111,19 @@ static int ufshcd_parse_clock_info(struct ufs_hba *hba)if (ret && (ret != -EINVAL )) {dev_err (dev,"%s: error reading array %d\n" ,"freq-table-hz" , ret); - goto free_clkfreq; +return ret; }for (i =0 ; i < sz; i +=2 ) { ret =of_property_read_string_index (np,"clock-names" , i/2 , (const char **)&name);if (ret) - goto free_clkfreq; + goto out; clki =devm_kzalloc (dev,sizeof (*clki),GFP_KERNEL );if (!clki) { ret = -ENOMEM ; - goto free_clkfreq; + goto out; } clki->min_freq = clkfreq[i];
@@ -134,8 +133,6 @@ static int ufshcd_parse_clock_info(struct ufs_hba *hba) clki->min_freq, clki->max_freq, clki->name);list_add_tail (&clki->list, &hba->clk_list_head); } -free_clkfreq: -kfree (clkfreq); out:return ret; }
@@ -162,10 +159,8 @@ static int ufshcd_populate_vreg(struct device *dev, const char *name, } vreg =devm_kzalloc (dev,sizeof (*vreg),GFP_KERNEL ); -if (!vreg) { -dev_err (dev,"No memory for %s regulator\n" , name); - goto out; - } +if (!vreg) +return -ENOMEM ; vreg->name =kstrdup (name,GFP_KERNEL );
drivers/scsi/ufs/ufshcd.c +64 -40
202 lines not on this page · raw message
drivers/scsi/ufs/ufshcd.h +0 -2
@@ -392,8 +392,6 @@ struct ufs_hba {* "UFS device" W-LU. */ struct scsi_device *sdev_ufs_device; -struct scsi_device *sdev_rpmb; -struct scsi_device *sdev_boot;enum ufs_dev_pwr_mode curr_dev_pwr_mode;enum uic_link_state uic_link_state;
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html