Commit 939a9516 authored by Jonathan McDowell's avatar Jonathan McDowell Committed by Jeff Garzik

[netdrvr] usb/hso: Cleanup rfkill error handling

Yup, this appears to be the problem, thanks. I think &hso_net->net->dev
is more intuitive for the error message, so I've used that. I've also
added missing line endings on the error messages and set our local
rfkill structure element to NULL on failure so we don't try to call
rfkill_unregister on driver removal if we failed to register at all.

The patch below Works For Me (TM); the device is detected fine, can be
removed without problems and connects ok. I'll have a prod at why the
rfkill stuff isn't working next, but I believe this cleanup of the error
handling is appropriate no matter what the issue with registration is.
Signed-Off-By: default avatarJonathan McDowell <noodles@earth.li>
Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
parent cd17fa7b
...@@ -2184,19 +2184,20 @@ static void hso_create_rfkill(struct hso_device *hso_dev, ...@@ -2184,19 +2184,20 @@ static void hso_create_rfkill(struct hso_device *hso_dev,
struct usb_interface *interface) struct usb_interface *interface)
{ {
struct hso_net *hso_net = dev2net(hso_dev); struct hso_net *hso_net = dev2net(hso_dev);
struct device *dev = hso_dev->dev; struct device *dev = &hso_net->net->dev;
char *rfkn; char *rfkn;
hso_net->rfkill = rfkill_allocate(&interface_to_usbdev(interface)->dev, hso_net->rfkill = rfkill_allocate(&interface_to_usbdev(interface)->dev,
RFKILL_TYPE_WWAN); RFKILL_TYPE_WWAN);
if (!hso_net->rfkill) { if (!hso_net->rfkill) {
dev_err(dev, "%s - Out of memory", __func__); dev_err(dev, "%s - Out of memory\n", __func__);
return; return;
} }
rfkn = kzalloc(20, GFP_KERNEL); rfkn = kzalloc(20, GFP_KERNEL);
if (!rfkn) { if (!rfkn) {
rfkill_free(hso_net->rfkill); rfkill_free(hso_net->rfkill);
dev_err(dev, "%s - Out of memory", __func__); hso_net->rfkill = NULL;
dev_err(dev, "%s - Out of memory\n", __func__);
return; return;
} }
snprintf(rfkn, 20, "hso-%d", snprintf(rfkn, 20, "hso-%d",
...@@ -2209,7 +2210,8 @@ static void hso_create_rfkill(struct hso_device *hso_dev, ...@@ -2209,7 +2210,8 @@ static void hso_create_rfkill(struct hso_device *hso_dev,
kfree(rfkn); kfree(rfkn);
hso_net->rfkill->name = NULL; hso_net->rfkill->name = NULL;
rfkill_free(hso_net->rfkill); rfkill_free(hso_net->rfkill);
dev_err(dev, "%s - Failed to register rfkill", __func__); hso_net->rfkill = NULL;
dev_err(dev, "%s - Failed to register rfkill\n", __func__);
return; return;
} }
} }
......
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