mirror of https://gitee.com/openkylin/linux.git
[DECNET]: dn_nl_deladdr() almost always returns no error
As far as I see from the err variable initialization the dn_nl_deladdr() routine was designed to report errors like "EADDRNOTAVAIL" and probaby "ENODEV". But the code sets this err to 0 after the first nlmsg_parse and goes on, returning this 0 in any case. Signed-off-by: Pavel Emelyanov <xemul@openvz.org> Acked-by: Steven Whitehouse <swhiteho@redhat.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
d31c7b8fa3
commit
3ccd86241b
|
@ -651,16 +651,18 @@ static int dn_nl_deladdr(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg)
|
|||
struct dn_dev *dn_db;
|
||||
struct ifaddrmsg *ifm;
|
||||
struct dn_ifaddr *ifa, **ifap;
|
||||
int err = -EADDRNOTAVAIL;
|
||||
int err;
|
||||
|
||||
err = nlmsg_parse(nlh, sizeof(*ifm), tb, IFA_MAX, dn_ifa_policy);
|
||||
if (err < 0)
|
||||
goto errout;
|
||||
|
||||
err = -ENODEV;
|
||||
ifm = nlmsg_data(nlh);
|
||||
if ((dn_db = dn_dev_by_index(ifm->ifa_index)) == NULL)
|
||||
goto errout;
|
||||
|
||||
err = -EADDRNOTAVAIL;
|
||||
for (ifap = &dn_db->ifa_list; (ifa = *ifap); ifap = &ifa->ifa_next) {
|
||||
if (tb[IFA_LOCAL] &&
|
||||
nla_memcmp(tb[IFA_LOCAL], &ifa->ifa_local, 2))
|
||||
|
|
Loading…
Reference in New Issue