On Sun, 19 Sep 2010 16:54:49 +0400 Vasiliy Kulikov <segooon@xxxxxxxxx> wrote: > If device_register() fails then call put_device(). > See comment to device_register. > > Signed-off-by: Vasiliy Kulikov <segooon@xxxxxxxxx> > --- > compile tested. > > drivers/memstick/core/memstick.c | 1 + > 1 files changed, 1 insertions(+), 0 deletions(-) > > diff --git a/drivers/memstick/core/memstick.c b/drivers/memstick/core/memstick.c > index c00fe82..4303b7e 100644 > --- a/drivers/memstick/core/memstick.c > +++ b/drivers/memstick/core/memstick.c > @@ -465,6 +465,7 @@ static void memstick_check(struct work_struct *work) > if (!host->card) { > host->card = card; > if (device_register(&card->dev)) { > + put_device(&card->dev); > kfree(host->card); > host->card = NULL; > } A failed device_register() takes a bogus ref on the not-registered device? It's no surprise that people are getting this wrong. The principle of least surprise says: fix device_register()! -- To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html