2013-05-18 02:59:39

by jonghwan Choi

[permalink] [raw]
Subject: [PATCH 3.9-stable] NTB: Multiple NTB client fix

From: Jon Mason <[email protected]>

This patch looks like it should be in the 3.9-stable tree, should we apply
it?

------------------

From: "Jon Mason <[email protected]>"

commit 8b19d450ad188d402a183ff4a4d40f31c3916fbf upstream

Fix issue with adding multiple ntb client devices to the ntb virtual
bus. Previously, multiple devices would be added with the same name,
resulting in crashes. To get around this issue, add a unique number to
the device when it is added.

Cc: <[email protected]> # 3.9.x: ad3e2751: ntb: off by one
Cc: <[email protected]> # 3.9.x: cc0f868d: NTB: fix pointer math
Cc: <[email protected]> # 3.9.x: 113fc505: NTB: Handle 64bit BAR
Cc: <[email protected]> # 3.9.x: b77b2637: NTB: Link toggle memory
Cc: <[email protected]> # 3.9.x: 90f9e934: NTB: reset tx_index on
Cc: <[email protected]> # 3.9.x: c9d534c8: NTB: Correctly handle receive
Cc: <[email protected]> # 3.9.x: c336acd3: NTB: memcpy lockup workaround
Cc: <[email protected]> # 3.9.x: 904435cf: ntb_netdev: remove from list
Signed-off-by: Jon Mason <[email protected]>
Signed-off-by: Jonghwan Choi <[email protected]>
---
drivers/ntb/ntb_transport.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/ntb/ntb_transport.c b/drivers/ntb/ntb_transport.c
index 0f66daa..f365b2f 100644
--- a/drivers/ntb/ntb_transport.c
+++ b/drivers/ntb/ntb_transport.c
@@ -300,7 +300,7 @@ int ntb_register_client_dev(char *device_name)
{
struct ntb_transport_client_dev *client_dev;
struct ntb_transport *nt;
- int rc;
+ int rc, i = 0;

if (list_empty(&ntb_transport_list))
return -ENODEV;
@@ -318,7 +318,7 @@ int ntb_register_client_dev(char *device_name)
dev = &client_dev->dev;

/* setup and register client devices */
- dev_set_name(dev, "%s", device_name);
+ dev_set_name(dev, "%s%d", device_name, i);
dev->bus = &ntb_bus_type;
dev->release = ntb_client_release;
dev->parent = &ntb_query_pdev(nt->ndev)->dev;
@@ -330,6 +330,7 @@ int ntb_register_client_dev(char *device_name)
}

list_add_tail(&client_dev->entry, &nt->client_devs);
+ i++;
}

return 0;
--
1.8.1.2


2013-05-18 14:49:32

by Jon Mason

[permalink] [raw]
Subject: Re: [PATCH 3.9-stable] NTB: Multiple NTB client fix

On Sat, May 18, 2013 at 11:57:29AM +0900, Jonghwan Choi wrote:
> From: Jon Mason <[email protected]>
>
> This patch looks like it should be in the 3.9-stable tree, should we apply
> it?

Yes, thanks.

>
> ------------------
>
> From: "Jon Mason <[email protected]>"
>
> commit 8b19d450ad188d402a183ff4a4d40f31c3916fbf upstream
>
> Fix issue with adding multiple ntb client devices to the ntb virtual
> bus. Previously, multiple devices would be added with the same name,
> resulting in crashes. To get around this issue, add a unique number to
> the device when it is added.
>
> Cc: <[email protected]> # 3.9.x: ad3e2751: ntb: off by one
> Cc: <[email protected]> # 3.9.x: cc0f868d: NTB: fix pointer math
> Cc: <[email protected]> # 3.9.x: 113fc505: NTB: Handle 64bit BAR
> Cc: <[email protected]> # 3.9.x: b77b2637: NTB: Link toggle memory
> Cc: <[email protected]> # 3.9.x: 90f9e934: NTB: reset tx_index on
> Cc: <[email protected]> # 3.9.x: c9d534c8: NTB: Correctly handle receive
> Cc: <[email protected]> # 3.9.x: c336acd3: NTB: memcpy lockup workaround
> Cc: <[email protected]> # 3.9.x: 904435cf: ntb_netdev: remove from list
> Signed-off-by: Jon Mason <[email protected]>
> Signed-off-by: Jonghwan Choi <[email protected]>
> ---
> drivers/ntb/ntb_transport.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/ntb/ntb_transport.c b/drivers/ntb/ntb_transport.c
> index 0f66daa..f365b2f 100644
> --- a/drivers/ntb/ntb_transport.c
> +++ b/drivers/ntb/ntb_transport.c
> @@ -300,7 +300,7 @@ int ntb_register_client_dev(char *device_name)
> {
> struct ntb_transport_client_dev *client_dev;
> struct ntb_transport *nt;
> - int rc;
> + int rc, i = 0;
>
> if (list_empty(&ntb_transport_list))
> return -ENODEV;
> @@ -318,7 +318,7 @@ int ntb_register_client_dev(char *device_name)
> dev = &client_dev->dev;
>
> /* setup and register client devices */
> - dev_set_name(dev, "%s", device_name);
> + dev_set_name(dev, "%s%d", device_name, i);
> dev->bus = &ntb_bus_type;
> dev->release = ntb_client_release;
> dev->parent = &ntb_query_pdev(nt->ndev)->dev;
> @@ -330,6 +330,7 @@ int ntb_register_client_dev(char *device_name)
> }
>
> list_add_tail(&client_dev->entry, &nt->client_devs);
> + i++;
> }
>
> return 0;
> --
> 1.8.1.2
>