summaryrefslogtreecommitdiffstats
path: root/drivers/uwb/uwb-internal.h
diff options
context:
space:
mode:
authorThomas Pugliese2013-06-24 21:26:35 +0200
committerGreg Kroah-Hartman2013-06-25 01:20:43 +0200
commita899575191ba85a71401f2c8f36bec7b14487043 (patch)
tree74070049b20ec44cf625db68ac62751e4b33cab0 /drivers/uwb/uwb-internal.h
parentwusbcore: add entries in Documentation/ABI for new wusbhc sysfs attributes (diff)
downloadkernel-qcow2-linux-a899575191ba85a71401f2c8f36bec7b14487043.tar.gz
kernel-qcow2-linux-a899575191ba85a71401f2c8f36bec7b14487043.tar.xz
kernel-qcow2-linux-a899575191ba85a71401f2c8f36bec7b14487043.zip
USB: HWA: fix device probe failure
This patch fixes a race condition that caused the HWA_HC interface probe function to occasionally fail. The HWA_HC would attempt to register itself with the HWA_RC by searching for a uwb_rc class device with the same parent device ptr. If the probe function for the HWA_RC interface had yet to run, the uwb_rc class device would not have been created causing the look up to fail and the HWA_HC probe function to return an error causing the device to be unusable. The fix is for the HWA to delay registering with the HWA_RC until receiving the command from userspace to start the wireless channel. It is the responsibility of userspace to ensure that the uwb_rc class device has been created before starting the HWA channel. Signed-off-by: Thomas Pugliese <thomas.pugliese@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/uwb/uwb-internal.h')
-rw-r--r--drivers/uwb/uwb-internal.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/uwb/uwb-internal.h b/drivers/uwb/uwb-internal.h
index a7494bf10081..9a103b100f1e 100644
--- a/drivers/uwb/uwb-internal.h
+++ b/drivers/uwb/uwb-internal.h
@@ -55,7 +55,8 @@ static inline struct uwb_rc *__uwb_rc_get(struct uwb_rc *rc)
static inline void __uwb_rc_put(struct uwb_rc *rc)
{
- uwb_dev_put(&rc->uwb_dev);
+ if (rc)
+ uwb_dev_put(&rc->uwb_dev);
}
extern int uwb_rc_reset(struct uwb_rc *rc);