projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
1c8bb76
)
ipv4: Fix runtime WARNING in rtmsg_ifa()
author
Geert Uytterhoeven
<
[email protected]
>
Wed, 5 Feb 2014 07:38:25 +0000
(08:38 +0100)
committer
David S. Miller
<
[email protected]
>
Fri, 7 Feb 2014 04:02:15 +0000
(20:02 -0800)
On m68k/ARAnyM:
WARNING: CPU: 0 PID: 407 at net/ipv4/devinet.c:1599 0x316a99()
Modules linked in:
CPU: 0 PID: 407 Comm: ifconfig Not tainted
3.13.0-atari-09263-g0c71d68014d1
#1378
Stack from
10c4fdf0
:
10c4fdf0
002ffabb
000243e8
00000000
008ced6c
00024416
00316a99
0000063f
00316a99
00000009
00000000
002501b4
00316a99
0000063f
c0a86117
00000080
c0a86117
00ad0c90
00250a5a
00000014
00ad0c90
00000000
00000000
00000001
00b02dd0
00356594
00000000
00356594
c0a86117
eff6c9e4
008ced6c
00000002
008ced60
0024f9b4
00250b52
00ad0c90
00000000
00000000
00252390
00ad0c90
eff6c9e4
0000004f
00000000
00000000
eff6c9e4
8000e25c
eff6c9e4
80001020
Call Trace: [<
000243e8
>] warn_slowpath_common+0x52/0x6c
[<
00024416
>] warn_slowpath_null+0x14/0x1a
[<
002501b4
>] rtmsg_ifa+0xdc/0xf0
[<
00250a5a
>] __inet_insert_ifa+0xd6/0x1c2
[<
0024f9b4
>] inet_abc_len+0x0/0x42
[<
00250b52
>] inet_insert_ifa+0xc/0x12
[<
00252390
>] devinet_ioctl+0x2ae/0x5d6
Adding some debugging code reveals that net_fill_ifaddr() fails in
put_cacheinfo(skb, ifa->ifa_cstamp, ifa->ifa_tstamp,
preferred, valid))
nla_put complains:
lib/nlattr.c:454: skb_tailroom(skb) = 12, nla_total_size(attrlen) = 20
Apparently commit
5c766d642bcaffd0c2a5b354db2068515b3846cf
("ipv4:
introduce address lifetime") forgot to take into account the addition of
struct ifa_cacheinfo in inet_nlmsg_size(). Hence add it, like is already
done for ipv6.
Suggested-by: Cong Wang <
[email protected]
>
Signed-off-by: Geert Uytterhoeven <
[email protected]
>
Signed-off-by: Cong Wang <
[email protected]
>
Signed-off-by: David S. Miller <
[email protected]
>
net/ipv4/devinet.c
patch
|
blob
|
history
diff --git
a/net/ipv4/devinet.c
b/net/ipv4/devinet.c
index ac2dff3c2c1cf053cce19edf5179daf750dc2732..bdbf68bb2e2d194fcdf94553bd41a4ac9f184d7c 100644
(file)
--- a/
net/ipv4/devinet.c
+++ b/
net/ipv4/devinet.c
@@
-1443,7
+1443,8
@@
static size_t inet_nlmsg_size(void)
+ nla_total_size(4) /* IFA_LOCAL */
+ nla_total_size(4) /* IFA_BROADCAST */
+ nla_total_size(IFNAMSIZ) /* IFA_LABEL */
- + nla_total_size(4); /* IFA_FLAGS */
+ + nla_total_size(4) /* IFA_FLAGS */
+ + nla_total_size(sizeof(struct ifa_cacheinfo)); /* IFA_CACHEINFO */
}
static inline u32 cstamp_delta(unsigned long cstamp)