On Tue, 27 Sep 2005, Sergey Vlasov wrote:
> 
> And then a process calls USBDEVFS_SUBMITURB and immediately exits; its
> pid gets reused by a completely different process (maybe even
> root-owned), then the urb completes, and kill_proc_info() sends the
> signal to the unsuspecting process.

Ehh.. pid's don't get re-used until they wrap.

Your _current_ code has that problem, though - "struct task_struct" _does_ 
get re-used.

Don't assume that the fixes are as bad.

Anyway, Christoph is certainly correct that what you _should_ be using is 
the SIGIO infrastructure, even if you don't actually use the fcntl() to 
register it. 

> Hmm, then probably send_sig_info() should check for non-NULL
> p->sighand after taking tasklist_lock?  Otherwise all uses of
> send_sig_info() for non-current tasks are unsafe.

I don't think so. 

Your oops is because you're using a STALE POINTER.

If you look it up by pid, it won't be stale, now will it?

Hint: the point where sighand is released is also the point where the 
process is unhashed.

                        Linus


-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to