| From foo@baz Sun May 27 17:33:38 CEST 2018 |
| From: Arvind Yadav <arvind.yadav.cs@gmail.com> |
| Date: Tue, 6 Mar 2018 15:40:37 +0530 |
| Subject: xen: xenbus: use put_device() instead of kfree() |
| |
| From: Arvind Yadav <arvind.yadav.cs@gmail.com> |
| |
| [ Upstream commit 351b2bccede1cb673ec7957b35ea997ea24c8884 ] |
| |
| Never directly free @dev after calling device_register(), even |
| if it returned an error! Always use put_device() to give up the |
| reference initialized. |
| |
| Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com> |
| Reviewed-by: Juergen Gross <jgross@suse.com> |
| Signed-off-by: Juergen Gross <jgross@suse.com> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/xen/xenbus/xenbus_probe.c | 5 ++++- |
| 1 file changed, 4 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/xen/xenbus/xenbus_probe.c |
| +++ b/drivers/xen/xenbus/xenbus_probe.c |
| @@ -470,8 +470,11 @@ int xenbus_probe_node(struct xen_bus_typ |
| |
| /* Register with generic device framework. */ |
| err = device_register(&xendev->dev); |
| - if (err) |
| + if (err) { |
| + put_device(&xendev->dev); |
| + xendev = NULL; |
| goto fail; |
| + } |
| |
| return 0; |
| fail: |