Hello, On Mon, Jul 30, 2018 at 05:50:02PM +0000, Bart Van Assche wrote: > On Mon, 2018-07-30 at 10:31 -0700, tj@xxxxxxxxxx wrote: > > On Mon, Jul 30, 2018 at 05:28:11PM +0000, Bart Van Assche wrote: > > > It's not clear to me how the sysfs_break_active_protection() should obtain > > > the struct kernfs_node pointer to the attribute. Calling that function before > > > device_remove_file_self() causes a double call to kernfs_break_active_protection(), > > > which is wrong. Calling kernfs_find_and_get(kobj->sd, attr->name) after the > > > > So, if you braek active protection explicitly, there's no need to call > > remove_self(). It can just use regular remove. > > But how to avoid that scsi_remove_device(to_scsi_device(dev)) gets called > multiple times when using device_remove_self() and in case of concurrent > writes into the SCSI device "delete" sysfs attribute? So, scsi_remove_device() internally protects using scan_mutex and if the whole thing is wrapped with break_active_prot, I don't think you need to call remove_file_self at all, right? Thanks. -- tejun