On 13/01/21 3:57 pm, Can Guo wrote: > User layer may access sysfs nodes when system PM ops or error handling > is running, which can cause various problems. Rename eh_sem to host_sem > and use it to protect PM ops and error handling from user layer intervene. > > Acked-by: Avri Altman <avri.altman@xxxxxxx> > Reviewed-by: Stanley Chu <stanley.chu@xxxxxxxxxxxx> > Signed-off-by: Can Guo <cang@xxxxxxxxxxxxxx> > --- > drivers/scsi/ufs/ufs-sysfs.c | 106 ++++++++++++++++++++++++++++++++++++------- > drivers/scsi/ufs/ufshcd.c | 42 ++++++++++------- > drivers/scsi/ufs/ufshcd.h | 10 +++- > 3 files changed, 125 insertions(+), 33 deletions(-) > > diff --git a/drivers/scsi/ufs/ufs-sysfs.c b/drivers/scsi/ufs/ufs-sysfs.c > index 0e14384..7cafffc 100644 > --- a/drivers/scsi/ufs/ufs-sysfs.c > +++ b/drivers/scsi/ufs/ufs-sysfs.c > @@ -154,18 +154,29 @@ static ssize_t auto_hibern8_show(struct device *dev, > struct device_attribute *attr, char *buf) > { > u32 ahit; > + int ret; > struct ufs_hba *hba = dev_get_drvdata(dev); > > if (!ufshcd_is_auto_hibern8_supported(hba)) > return -EOPNOTSUPP; > > + down(&hba->host_sem); > + if (!ufshcd_is_sysfs_allowed(hba)) { I expect debugfs has the same potential problem, so maybe ufshcd_is_sysfs_allowed() is not quite the right name. > + ret = -EBUSY; > + goto out; > + } > +