Skip to content

Commit c86d861

Browse files
ldv-altkuba-moo
authored andcommitted
Partially revert "net/smc: Add netlink net namespace support"
The change of sizeof(struct smc_diag_linkinfo) by commit 79d39fc ("net/smc: Add netlink net namespace support") introduced an ABI regression: since struct smc_diag_lgrinfo contains an object of type "struct smc_diag_linkinfo", offset of all subsequent members of struct smc_diag_lgrinfo was changed by that change. As result, applications compiled with the old version of struct smc_diag_linkinfo will receive garbage in struct smc_diag_lgrinfo.role if the kernel implements this new version of struct smc_diag_linkinfo. Fix this regression by reverting the part of commit 79d39fc that changes struct smc_diag_linkinfo. After all, there is SMC_GEN_NETLINK interface which is good enough, so there is probably no need to touch the smc_diag ABI in the first place. Fixes: 79d39fc ("net/smc: Add netlink net namespace support") Signed-off-by: Dmitry V. Levin <ldv@altlinux.org> Reviewed-by: Karsten Graul <kgraul@linux.ibm.com> Link: https://lore.kernel.org/r/20220202030904.GA9742@altlinux.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent c8ff576 commit c86d861

File tree

2 files changed

+5
-8
lines changed

2 files changed

+5
-8
lines changed

include/uapi/linux/smc_diag.h

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -84,12 +84,11 @@ struct smc_diag_conninfo {
8484
/* SMC_DIAG_LINKINFO */
8585

8686
struct smc_diag_linkinfo {
87-
__u8 link_id; /* link identifier */
88-
__u8 ibname[IB_DEVICE_NAME_MAX]; /* name of the RDMA device */
89-
__u8 ibport; /* RDMA device port number */
90-
__u8 gid[40]; /* local GID */
91-
__u8 peer_gid[40]; /* peer GID */
92-
__aligned_u64 net_cookie; /* RDMA device net namespace */
87+
__u8 link_id; /* link identifier */
88+
__u8 ibname[IB_DEVICE_NAME_MAX]; /* name of the RDMA device */
89+
__u8 ibport; /* RDMA device port number */
90+
__u8 gid[40]; /* local GID */
91+
__u8 peer_gid[40]; /* peer GID */
9392
};
9493

9594
struct smc_diag_lgrinfo {

net/smc/smc_diag.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,13 +146,11 @@ static int __smc_diag_dump(struct sock *sk, struct sk_buff *skb,
146146
(req->diag_ext & (1 << (SMC_DIAG_LGRINFO - 1))) &&
147147
!list_empty(&smc->conn.lgr->list)) {
148148
struct smc_link *link = smc->conn.lnk;
149-
struct net *net = read_pnet(&link->smcibdev->ibdev->coredev.rdma_net);
150149

151150
struct smc_diag_lgrinfo linfo = {
152151
.role = smc->conn.lgr->role,
153152
.lnk[0].ibport = link->ibport,
154153
.lnk[0].link_id = link->link_id,
155-
.lnk[0].net_cookie = net->net_cookie,
156154
};
157155

158156
memcpy(linfo.lnk[0].ibname,

0 commit comments

Comments
 (0)