Commit 5c138dce authored by Andrey Borzenkov's avatar Andrey Borzenkov Committed by John W. Linville

orinoco: do not resgister NULL pm_notifier function

With DEBUG_NOTIFIERS it results in

[11330.890966] WARNING: at /home/bor/src/linux-git/kernel/notifier.c:88
notifier_call_chain+0x91/0xa0()
[11330.890977] Hardware name: PORTEGE 4000
[11330.890983] Invalid notifier called! ...

Without DEBUG_NOTIFIERS it most likely crashes on NULL pointer.
Signed-off-by: default avatarAndrey Borzenkov <arvidjaar@mail.ru>
Acked-by: default avatarDavid Kilroy <kilroyd@googlemail.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 486a87f1
...@@ -3157,8 +3157,20 @@ static int orinoco_pm_notifier(struct notifier_block *notifier, ...@@ -3157,8 +3157,20 @@ static int orinoco_pm_notifier(struct notifier_block *notifier,
return NOTIFY_DONE; return NOTIFY_DONE;
} }
static void orinoco_register_pm_notifier(struct orinoco_private *priv)
{
priv->pm_notifier.notifier_call = orinoco_pm_notifier;
register_pm_notifier(&priv->pm_notifier);
}
static void orinoco_unregister_pm_notifier(struct orinoco_private *priv)
{
unregister_pm_notifier(&priv->pm_notifier);
}
#else /* !PM_SLEEP || HERMES_CACHE_FW_ON_INIT */ #else /* !PM_SLEEP || HERMES_CACHE_FW_ON_INIT */
#define orinoco_pm_notifier NULL #define orinoco_register_pm_notifier(priv) do { } while(0)
#define orinoco_unregister_pm_notifier(priv) do { } while(0)
#endif #endif
/********************************************************************/ /********************************************************************/
...@@ -3648,8 +3660,7 @@ struct net_device ...@@ -3648,8 +3660,7 @@ struct net_device
priv->cached_fw = NULL; priv->cached_fw = NULL;
/* Register PM notifiers */ /* Register PM notifiers */
priv->pm_notifier.notifier_call = orinoco_pm_notifier; orinoco_register_pm_notifier(priv);
register_pm_notifier(&priv->pm_notifier);
return dev; return dev;
} }
...@@ -3673,7 +3684,7 @@ void free_orinocodev(struct net_device *dev) ...@@ -3673,7 +3684,7 @@ void free_orinocodev(struct net_device *dev)
kfree(rx_data); kfree(rx_data);
} }
unregister_pm_notifier(&priv->pm_notifier); orinoco_unregister_pm_notifier(priv);
orinoco_uncache_fw(priv); orinoco_uncache_fw(priv);
priv->wpa_ie_len = 0; priv->wpa_ie_len = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment