[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20200921162037.233334743@linuxfoundation.org>
Date: Mon, 21 Sep 2020 18:27:46 +0200
From: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
To: linux-kernel@...r.kernel.org
Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
stable@...r.kernel.org, Jason Gunthorpe <jgg@...dia.com>,
Yi Zhang <yi.zhang@...hat.com>,
Bart Van Assche <bvanassche@....org>,
Sasha Levin <sashal@...nel.org>
Subject: [PATCH 4.9 46/70] RDMA/rxe: Fix the parent sysfs read when the interface has 15 chars
From: Yi Zhang <yi.zhang@...hat.com>
[ Upstream commit 60b1af64eb35074a4f2d41cc1e503a7671e68963 ]
'parent' sysfs reads will yield '\0' bytes when the interface name has 15
chars, and there will no "\n" output.
To reproduce, create one interface with 15 chars:
[root@...t ~]# ip a s enp0s29u1u7u3c2
2: enp0s29u1u7u3c2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
link/ether 02:21:28:57:47:17 brd ff:ff:ff:ff:ff:ff
inet6 fe80::ac41:338f:5bcd:c222/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@...t ~]# modprobe rdma_rxe
[root@...t ~]# echo enp0s29u1u7u3c2 > /sys/module/rdma_rxe/parameters/add
[root@...t ~]# cat /sys/class/infiniband/rxe0/parent
enp0s29u1u7u3c2[root@...t ~]#
[root@...t ~]# f="/sys/class/infiniband/rxe0/parent"
[root@...t ~]# echo "$(<"$f")"
-bash: warning: command substitution: ignored null byte in input
enp0s29u1u7u3c2
Use scnprintf and PAGE_SIZE to fill the sysfs output buffer.
Cc: stable@...r.kernel.org
Fixes: 8700e3e7c485 ("Soft RoCE driver")
Link: https://lore.kernel.org/r/20200820153646.31316-1-yi.zhang@redhat.com
Suggested-by: Jason Gunthorpe <jgg@...dia.com>
Signed-off-by: Yi Zhang <yi.zhang@...hat.com>
Reviewed-by: Bart Van Assche <bvanassche@....org>
Signed-off-by: Jason Gunthorpe <jgg@...dia.com>
Signed-off-by: Sasha Levin <sashal@...nel.org>
---
drivers/infiniband/sw/rxe/rxe_verbs.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.c b/drivers/infiniband/sw/rxe/rxe_verbs.c
index 26d66431f95b7..3b24ce8e3b3cb 100644
--- a/drivers/infiniband/sw/rxe/rxe_verbs.c
+++ b/drivers/infiniband/sw/rxe/rxe_verbs.c
@@ -1195,7 +1195,7 @@ static ssize_t rxe_show_parent(struct device *device,
struct rxe_dev *rxe = container_of(device, struct rxe_dev,
ib_dev.dev);
- return snprintf(buf, 16, "%s\n", rxe_parent_name(rxe, 1));
+ return scnprintf(buf, PAGE_SIZE, "%s\n", rxe_parent_name(rxe, 1));
}
static DEVICE_ATTR(parent, S_IRUGO, rxe_show_parent, NULL);
--
2.25.1
Powered by blists - more mailing lists