linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Ref-count problem in kset_find_obj?
@ 2003-10-29 12:38 Martin Schwidefsky
  2003-10-30  0:24 ` Patrick Mochel
  0 siblings, 1 reply; 4+ messages in thread
From: Martin Schwidefsky @ 2003-10-29 12:38 UTC (permalink / raw)
  To: mochel; +Cc: linux-kernel

Hi Pat,
looking through the sysfs code I noticed a potential problem in
kset_find_obj:

struct kobject * kset_find_obj(struct kset * kset, const char * name)
{
        struct list_head * entry;
        struct kobject * ret = NULL;

        down_read(&kset->subsys->rwsem);
        list_for_each(entry,&kset->list) {
                struct kobject * k = to_kobj(entry);
                if (!strcmp(kobject_name(k),name)) {
			ret = k;
			break;
                }
        }
        up_read(&kset->subsys->rwsem);
        return ret;
}

The reference count of the kobject to be returned is not
increased before the semaphore is released. A kobject_del/unlink
could remove the object before the called of kset_find_obj is
able to increase the reference count. This makes kset_find_obj
more or less unusable, doesn't it?

blue skies,
  Martin.


^ permalink raw reply	[flat|nested] 4+ messages in thread
* Re: Ref-count problem in kset_find_obj?
@ 2003-10-30  8:46 Martin Schwidefsky
  0 siblings, 0 replies; 4+ messages in thread
From: Martin Schwidefsky @ 2003-10-30  8:46 UTC (permalink / raw)
  To: Matt Domsch; +Cc: linux-kernel, Patrick Mochel


> > Yes, you're right. The function is pretty much unused, and I don't have
a
> > problem removing it, provided we can fix up the one user
> > (arch/i386/kernel/edd.c). Unless of course, you're planning on using
it..
>
> At the moment, edd.c doesn't actually use it.  It wants to -
> find_bus() is a useful concept, but I haven't proven that the scsi_bus
> list only has scsi_devices on it, so that code isn't compiled in at
> present.  If the scsi_bus list is clean now, then yes, I'll want to
> turn it back on (after 2.6.0 is out) and will need find_bus() to be
> possible.

We don't plan to use kset_find_obj in the near future but since Matt
wants to use it, better fix it. The fix should be easy just add a
kobject_get and make the caller of kset_find_obj return the reference
again.

blue skies,
   Martin



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2003-10-30  8:47 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-10-29 12:38 Ref-count problem in kset_find_obj? Martin Schwidefsky
2003-10-30  0:24 ` Patrick Mochel
2003-10-30  5:42   ` Matt Domsch
2003-10-30  8:46 Martin Schwidefsky

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).