diff --git a/drivers/extcon/extcon.c b/drivers/extcon/extcon.c index 004c7cbc37ab..3c63e5139933 100644 --- a/drivers/extcon/extcon.c +++ b/drivers/extcon/extcon.c @@ -1317,8 +1317,7 @@ int extcon_dev_register(struct extcon_dev *edev) } } - edev->bnh = devm_kzalloc(&edev->dev, - sizeof(*edev->bnh) * edev->max_supported, GFP_KERNEL); + edev->bnh = kzalloc(sizeof(*edev->bnh) * edev->max_supported, GFP_KERNEL); if (!edev->bnh) { ret = -ENOMEM; goto err_dev; @@ -1335,7 +1334,7 @@ int extcon_dev_register(struct extcon_dev *edev) ret = device_register(&edev->dev); if (ret) { put_device(&edev->dev); - goto err_dev; + goto err_reg; } mutex_lock(&extcon_dev_list_lock); @@ -1344,6 +1343,8 @@ int extcon_dev_register(struct extcon_dev *edev) return 0; +err_reg: + kfree(edev->bnh); err_dev: if (edev->max_supported) kfree(edev->nh); @@ -1410,6 +1411,7 @@ void extcon_dev_unregister(struct extcon_dev *edev) kfree(edev->cables); kfree(edev->nh); } + kfree(edev->bnh); put_device(&edev->dev); }