[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <AM4PR07MB1714A8BF7378A64B4F1B77CC9A280@AM4PR07MB1714.eurprd07.prod.outlook.com>
Date: Tue, 14 Nov 2017 20:24:43 +0000
From: Jon Maloy <jon.maloy@...csson.com>
To: David Ahern <dsahern@...il.com>,
"netdev@...r.kernel.org" <netdev@...r.kernel.org>,
Jiri Pirko <jiri@...nulli.us>
CC: "David Miller (davem@...emloft.net)" <davem@...emloft.net>
Subject: RE: Broken netlink ABI
> -----Original Message-----
> From: netdev-owner@...r.kernel.org [mailto:netdev-
> owner@...r.kernel.org] On Behalf Of David Ahern
> Sent: Tuesday, November 14, 2017 15:18
> To: Jon Maloy <jon.maloy@...csson.com>; netdev@...r.kernel.org; Jiri
> Pirko <jiri@...nulli.us>
> Cc: David Miller (davem@...emloft.net) <davem@...emloft.net>
> Subject: Re: Broken netlink ABI
>
> On 11/14/17 1:15 PM, David Ahern wrote:
> > On 11/14/17 12:19 PM, Jon Maloy wrote:
> >> When I give the command:
> >> ~$ tipc node set addr 1.1.2
> >>
> >> I get the following response:
> >>
> >> error: Numerical result out of range
> >> Unable to get TIPC nl family id (module loaded?) error, message
> >> initialisation failed
> >
> > tipc is sending a u32 for the family attribute when it should be a u16:
> >
> > diff --git a/tipc/msg.c b/tipc/msg.c
> > index 22c22226bb20..dc09d05048f3 100644
> > --- a/tipc/msg.c
> > +++ b/tipc/msg.c
> > @@ -125,7 +125,7 @@ static int get_family(void)
> > genl->cmd = CTRL_CMD_GETFAMILY;
> > genl->version = 1;
> >
> > - mnl_attr_put_u32(nlh, CTRL_ATTR_FAMILY_ID, GENL_ID_CTRL);
> > + mnl_attr_put_u16(nlh, CTRL_ATTR_FAMILY_ID, GENL_ID_CTRL);
> > mnl_attr_put_strz(nlh, CTRL_ATTR_FAMILY_NAME,
> > TIPC_GENL_V2_NAME);
> >
> > if ((err = msg_query(nlh, family_id_cb, &nl_family)))
> >
> > With the above change the tipc command runs fine.
I can fix that, but that that doesn't change the fact that binaries that have been around and worked flawlessly for years now all by sudden have stopped working.
Whether the user is doing right or wrong, that if for me the very definition of a broken ABI, and is unacceptable.
Either you have to remove the test in your patch, or you can try to identify tipc and devlink in the code and exempt those from your test.
BR
///jon
> >
>
> devlink is similarly broken:
>
> diff --git a/devlink/mnlg.c b/devlink/mnlg.c index
> 9e27de275518..b1e1b0ab32f6 100644
> --- a/devlink/mnlg.c
> +++ b/devlink/mnlg.c
> @@ -163,7 +163,7 @@ int mnlg_socket_group_add(struct mnlg_socket *nlg,
> const char *group_name)
>
> nlh = __mnlg_msg_prepare(nlg, CTRL_CMD_GETFAMILY,
> NLM_F_REQUEST | NLM_F_ACK, GENL_ID_CTRL, 1);
> - mnl_attr_put_u32(nlh, CTRL_ATTR_FAMILY_ID, nlg->id);
> + mnl_attr_put_u16(nlh, CTRL_ATTR_FAMILY_ID, nlg->id);
>
> err = mnlg_socket_send(nlg, nlh);
> if (err < 0)
Powered by blists - more mailing lists