diff options
| author | Andrew Morton <akpm@osdl.org> | 2004-03-01 07:06:33 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-03-01 07:06:33 -0800 |
| commit | 8813723a4089cbfe641a4f5eaf31014bec4fe30e (patch) | |
| tree | 0eeb4d956a88630e5d006f520ebe644d82bd984c /drivers/base | |
| parent | a4f10cfd56ed9a90677f4d0293908ead2935b07a (diff) | |
[PATCH] firmware loader: pin firmware module
From: Dmitry Torokhov <dtor_core@ameritech.net>
We need to pin the firmware loader module until the last reference to the
firmware class device is dropped and the class device is destroyed.
Diffstat (limited to 'drivers/base')
| -rw-r--r-- | drivers/base/firmware_class.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c index 2d5106325123..81609ffbd1d7 100644 --- a/drivers/base/firmware_class.c +++ b/drivers/base/firmware_class.c @@ -263,6 +263,8 @@ fw_class_dev_release(struct class_device *class_dev) kfree(fw_priv); kfree(class_dev); + + module_put(THIS_MODULE); } static void @@ -325,6 +327,7 @@ error_kfree: kfree(class_dev); return retval; } + static int fw_setup_class_device(struct firmware *fw, struct class_device **class_dev_p, const char *fw_name, struct device *device) @@ -338,6 +341,9 @@ fw_setup_class_device(struct firmware *fw, struct class_device **class_dev_p, if (retval) goto out; + /* Need to pin this module until class device is destroyed */ + __module_get(THIS_MODULE); + fw_priv = class_get_devdata(class_dev); fw_priv->fw = fw; |
