Messages in this thread | | | Date | Wed, 7 Nov 2007 23:06:47 +0100 (CET) | From | Peter Osterlund <> | Subject | Re: pktcdvd oops |
| |
On Wed, 7 Nov 2007, Tejun Heo wrote:
> Peter Osterlund wrote: >> If the >> __module_get() is not safe because the module code could have already >> been unloaded, how can it possibly be made safe by adding more code to >> the pktcdvd module? If the module is unloaded, trying to execute its >> code can't be a good thing no matter what the code does. > > sysfs itself is now out of module lifespan rules. sysfs callbacks are > guaranteed to stay in memory while running by sysfs node removal waiting > for completion of in-flight operations before returning. In pktcdvd's > case, class_destroy() call in pkt_sysfs_cleanup() will wait for all > in-flight sysfs r/w ops to complete. > > So, even while sysfs callbacks are executing, the module beneath can die > but it will stay in memory till all the callbacks return. You need to > test module liveness using try_module_get() (and it can fail) if you > want to grab module reference from sysfs callbacks.
Thanks for the explanation.
Given that explanation, I think the patch is correct and it does fix the BUG on my computer. Can you please push it upstream?
In any case:
Acked-by: Peter Osterlund <petero2@telia.com>
-- Peter Osterlund - petero2@telia.com http://web.telia.com/~u89404340 - 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/
| |