|
@@ -836,25 +836,30 @@ static int hfa384x_get_rid(struct net_device *dev, u16 rid, void *buf, int len,
|
|
|
spin_lock_bh(&local->baplock);
|
|
|
|
|
|
res = hfa384x_setup_bap(dev, BAP0, rid, 0);
|
|
|
- if (!res)
|
|
|
- res = hfa384x_from_bap(dev, BAP0, &rec, sizeof(rec));
|
|
|
+ if (res)
|
|
|
+ goto unlock;
|
|
|
+
|
|
|
+ res = hfa384x_from_bap(dev, BAP0, &rec, sizeof(rec));
|
|
|
+ if (res)
|
|
|
+ goto unlock;
|
|
|
|
|
|
if (le16_to_cpu(rec.len) == 0) {
|
|
|
/* RID not available */
|
|
|
res = -ENODATA;
|
|
|
+ goto unlock;
|
|
|
}
|
|
|
|
|
|
rlen = (le16_to_cpu(rec.len) - 1) * 2;
|
|
|
- if (!res && exact_len && rlen != len) {
|
|
|
+ if (exact_len && rlen != len) {
|
|
|
printk(KERN_DEBUG "%s: hfa384x_get_rid - RID len mismatch: "
|
|
|
"rid=0x%04x, len=%d (expected %d)\n",
|
|
|
dev->name, rid, rlen, len);
|
|
|
res = -ENODATA;
|
|
|
}
|
|
|
|
|
|
- if (!res)
|
|
|
- res = hfa384x_from_bap(dev, BAP0, buf, len);
|
|
|
+ res = hfa384x_from_bap(dev, BAP0, buf, len);
|
|
|
|
|
|
+unlock:
|
|
|
spin_unlock_bh(&local->baplock);
|
|
|
mutex_unlock(&local->rid_bap_mtx);
|
|
|
|