Re: [linux-usb-devel] [2.4 patch] Port of adutux driver from 2.6 kernel to 2.4.

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: <vitalivanov@...>
Cc: <linux-kernel@...>, <gregkh@...>, <zaitcev@...>, <w@...>, <linux-usb-devel@...>
Date: Monday, October 22, 2007 - 11:45 pm

On Fri, 19 Oct 2007 20:40:35 +0300, Vitaliy Ivanov <vitalivanov@gmail.com> wrote:

Hi, Vitaly, I added you on cc: for the 2.6 cleanup. Please double-check
what I'm doing there and use it for your 2.4 version. I hope my intentions
get clearer with an example. Now, about the specific question:


The fundamental reason why you cannot lock a free-able structure with
an in-structure lock is this. Imagine thread A locks in order to process
a disconnect. Thread B wants to open and waits for the lock. Notice that
the struct is not open, so thread A frees it. At this point, thread B
is using a freed memory.

The solution is to lock the instance struct dev with dev->mtx, except
for the open count, which is locked by a static lock (I'm ignoring
interrupts here, which cannot use mutexes).

I'm sorry to say, you're quite right: a number of drivers in 2.4 got
it wrong, and some (like adutux) carried it through 2.6.23.

-- Pete

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Re: [linux-usb-devel] [2.4 patch] Port of adutux driver from..., Pete Zaitcev, (Mon Oct 22, 11:45 pm)