lkml.org 
[lkml]   [2003]   [Sep]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH] s390 (2/19): common i/o layer.
From
Date

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/

\
 
 \ /
  Last update: 2005-03-22 13:48    [W:0.022 / U:0.280 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site