Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757247AbZLDTzr (ORCPT ); Fri, 4 Dec 2009 14:55:47 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1757231AbZLDTzq (ORCPT ); Fri, 4 Dec 2009 14:55:46 -0500 Received: from smtp-out003.kontent.com ([81.88.40.217]:54240 "EHLO smtp-out003.kontent.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757230AbZLDTzo (ORCPT ); Fri, 4 Dec 2009 14:55:44 -0500 From: Oliver Neukum To: Greg KH Subject: Re: [PATCH] Driver core: fix race in dev_driver_string Date: Fri, 4 Dec 2009 20:55:55 +0100 User-Agent: KMail/1.12.2 (Linux/2.6.32-rc6-0.1-default; KDE/4.3.1; x86_64; ; ) Cc: Alan Stern , stable@kernel.org, Rickard Bellini , "linux-usb@vger.kernel.org" , Torgny Johansson , Kernel development list References: <200912041716.19329.oliver@neukum.org> <20091204165040.GB2180@suse.de> In-Reply-To: <20091204165040.GB2180@suse.de> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <200912042055.55565.oliver@neukum.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1412 Lines: 54 Am Freitag, 4. Dezember 2009 17:50:40 schrieb Greg KH: > On Fri, Dec 04, 2009 at 05:16:19PM +0100, Oliver Neukum wrote: > > Am Freitag, 4. Dezember 2009 17:06:57 schrieb Alan Stern: > > > Oliver: > > > > > > We don't have to worry about the device structure being deallocated > > > while the routine is running. If that happens it's a bug in the > > > caller: improper refcounting. > > > > > > That raises two points > > > > 1. am I supposed to get a reference just so that I can use dev_err? > > No, you should already have a reference on the device when doing the > call, right? No, why? Consider this: int write(...) { ... mutex_lock(&instance->lock); if (instance->disconnected) { dev_dbg(instance->dev,"writing to disconnected device"); rv = -ENODEV; } else { res = usb_submit_urb(...); rv = res < 0 ? -EIO : count; } mutex_unlock(&instance->lock); return rv; } void disconnect(...) { ... mutex_lock(&instance->lock); instance->disconnected = 1; usb_kill_urb(...); usb_kill_urb(...); mutex_unlock(&instance->lock); } This would be perfectly valid code without any references taken save for the pesky dev_dbg() Regards Oliver -- 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/