Messages in this thread | | | Subject | Re: [PATCH] s390 (2/19): common i/o layer. | From | "Martin Schwidefsky" <> | Date | Mon, 29 Sep 2003 10:24:15 +0200 |
| |
Hi Christoph,
> > +static inline void > > +__ccwgroup_remove_symlinks(struct ccwgroup_device *gdev) > > +{ > > + int i; > > + char str[8]; > > + > > + for (i = 0; i < gdev->count; i++) { > > + sprintf(str, "cdev%d", i); > > + sysfs_remove_link(&gdev->dev.kobj, str); > > + /* Hack: Make sure we act on still valid subdirs. */ > > + if (atomic_read(&gdev->cdev[i]->dev.kobj.dentry->d_count)) > > + sysfs_remove_link(&gdev->cdev[i]->dev.kobj, > > + "group_device"); > > + } > > This looks like you have a bad refcounting problem somewhere. I'd rather > see it fixed than hacked around..
Conny and I looked at the code paths and we came to the conclusion that it should work as is but without the atomic_read hack. The remove function of groupable ccw devices points to ccwgroup_remove_ccwdev. This function ungroups the ccw devices if one of them is deleted. This is done prior to the removal of the sysfs directory for the ccw device. So the atomic_read is superflous, d_count has to be > 0. Conny once saw a crash due to an already deleted dentry but we couldn't recreate the problem. We decided to remove the hack and to see what happens. If we get another crash we'll have to find the real cause of it.
blue skies, Martin
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |