From: Ulrich Kunitz The signature of work functions changed recently from a context pointer to the work structure pointer. This caused a problem in the ieee80211softmac code, because the ieee80211softmac_assoc_work function has been called directly with a parameter explicitly casted to (void*). This compiled correctly but resulted in a softlock, because mutex_lock was called with the wrong memory address. The patch fixes the problem. Softmac works again and this fixes the problem I mentioned earlier in the zd1211rw rx tasklet patch. Signed-off-by: Ulrich Kunitz Acked-by: Michael Buesch Cc: "John W. Linville" Cc: David Howells Signed-off-by: Andrew Morton --- net/ieee80211/softmac/ieee80211softmac_assoc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff -puN net/ieee80211/softmac/ieee80211softmac_assoc.c~ieee80211softmac-fix-errors-related-to-the-work_struct-changes net/ieee80211/softmac/ieee80211softmac_assoc.c --- a/net/ieee80211/softmac/ieee80211softmac_assoc.c~ieee80211softmac-fix-errors-related-to-the-work_struct-changes +++ a/net/ieee80211/softmac/ieee80211softmac_assoc.c @@ -167,7 +167,7 @@ static void ieee80211softmac_assoc_notify_scan(struct net_device *dev, int event_type, void *context) { struct ieee80211softmac_device *mac = ieee80211_priv(dev); - ieee80211softmac_assoc_work((void*)mac); + ieee80211softmac_assoc_work(&mac->associnfo.work.work); } static void @@ -177,7 +177,7 @@ ieee80211softmac_assoc_notify_auth(struc switch (event_type) { case IEEE80211SOFTMAC_EVENT_AUTHENTICATED: - ieee80211softmac_assoc_work((void*)mac); + ieee80211softmac_assoc_work(&mac->associnfo.work.work); break; case IEEE80211SOFTMAC_EVENT_AUTH_FAILED: case IEEE80211SOFTMAC_EVENT_AUTH_TIMEOUT: _