lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 29 Mar 2017 12:27:14 +0200 From: Jinpu Wang <jinpu.wang@...fitbricks.com> To: Johannes Thumshirn <jthumshirn@...e.de> Cc: "Martin K . Petersen" <martin.petersen@...cle.com>, Tejun Heo <tj@...nel.org>, James Bottomley <jejb@...ux.vnet.ibm.com>, Dan Williams <dan.j.williams@...el.com>, John Garry <john.garry@...wei.com>, Hannes Reinecke <hare@...e.de>, Linux SCSI Mailinglist <linux-scsi@...r.kernel.org>, Linux Kernel Mailinglist <linux-kernel@...r.kernel.org> Subject: Re: [PATCH 6/6] scsi: pm8001: remove the SAS host after the SCSI host On Wed, Mar 29, 2017 at 11:41 AM, Johannes Thumshirn <jthumshirn@...e.de> wrote: > After commit bcdde7e ("sysfs: make __sysfs_remove_dir() recursive") changed the > removal path of kernfs to make it recursive we have to remove the SAS host > before the SCSI host or we will see sysfs warnings on not found sysfs groups for > kobjects. > > Signed-off-by: Johannes Thumshirn <jthumshirn@...e.de> > --- > drivers/scsi/pm8001/pm8001_init.c | 14 ++++++++++++-- > 1 file changed, 12 insertions(+), 2 deletions(-) > > diff --git a/drivers/scsi/pm8001/pm8001_init.c b/drivers/scsi/pm8001/pm8001_init.c > index 417368c..9116e9c 100644 > --- a/drivers/scsi/pm8001/pm8001_init.c > +++ b/drivers/scsi/pm8001/pm8001_init.c > @@ -1086,11 +1086,21 @@ static void pm8001_pci_remove(struct pci_dev *pdev) > { > struct sas_ha_struct *sha = pci_get_drvdata(pdev); > struct pm8001_hba_info *pm8001_ha; > + unsigned long flags; > + struct Scsi_Host *shost; > int i, j; > pm8001_ha = sha->lldd_ha; > - scsi_remove_host(pm8001_ha->shost); > + shost = pm8001_ha->shost; > + > + spin_lock_irqsave(shost->host_lock, flags); > + if (scsi_host_set_state(shost, SHOST_CANCEL)) > + WARN_ON(scsi_host_set_state(shost, SHOST_CANCEL_RECOVERY)); > + spin_unlock_irqrestore(shost->host_lock, flags); > + > sas_unregister_ha(sha); > - sas_remove_host(pm8001_ha->shost); > + sas_remove_host(shost); > + scsi_remove_host(shost); > + > list_del(&pm8001_ha->list); > PM8001_CHIP_DISP->interrupt_disable(pm8001_ha, 0xFF); > PM8001_CHIP_DISP->chip_soft_rst(pm8001_ha); > -- > 1.8.5.6 > Thanks Johannes for taking care of this. Looks good to me, I have a question regarding the scsi_host_set_state change, why do we need that? Can't we simply change the order of sas_remove_host and scsi_remove_host? Cheers? -- Jack Wang
Powered by blists - more mailing lists