From: Alan Stern Date: Tue, 1 Sep 2009 15:38:59 +0000 (-0400) Subject: usb-serial: change logic of serial lookups X-Git-Tag: v2.6.32-rc1~627^2~6 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8bc2c1b2daf95029658868cb1427baea2da87139;p=pandora-kernel.git usb-serial: change logic of serial lookups This patch (as1286) changes usb_serial_get_by_index(). Now the routine will check whether the serial device has been disconnected; if it has then the return value will be NULL. If the device hasn't been disconnected then the routine will return with serial->disc_mutex held, so that the caller can use the structure without fear of racing against driver unloads. This permits the scope of table_mutex in destroy_serial() to be reduced. Instead of protecting the entire function, it suffices to protect the part that actually uses serial_table[], i.e., the call to return_serial(). There's no longer any danger of the refcount being incremented after it reaches 0 (which was the reason for having the large scope previously), because it can't reach 0 until the serial device has been disconnected. Also, the patch makes serial_install() check that serial is non-NULL before attempting to use it. Signed-off-by: Alan Stern Cc: stable Signed-off-by: Greg Kroah-Hartman --- Reading git-diff-tree failed