* [PATCH] flow: fix object-size-mismatch warning in flowi{4,6}_to_flowi_common()
@ 2021-09-02 5:36 Tetsuo Handa
2021-09-02 10:50 ` patchwork-bot+netdevbpf
0 siblings, 1 reply; 2+ messages in thread
From: Tetsuo Handa @ 2021-09-02 5:36 UTC (permalink / raw)
To: David S. Miller, Jakub Kicinski
Cc: Nathan Chancellor, Nick Desaulniers, netdev, clang-built-linux,
Hillf Danton
Commit 3df98d79215ace13 ("lsm,selinux: pass flowi_common instead of flowi
to the LSM hooks") introduced flowi{4,6}_to_flowi_common() functions which
cause UBSAN warning when building with LLVM 11.0.1 on Ubuntu 21.04.
================================================================================
UBSAN: object-size-mismatch in ./include/net/flow.h:197:33
member access within address ffffc9000109fbd8 with insufficient space
for an object of type 'struct flowi'
CPU: 2 PID: 7410 Comm: systemd-resolve Not tainted 5.14.0 #51
Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 02/27/2020
Call Trace:
dump_stack_lvl+0x103/0x171
ubsan_type_mismatch_common+0x1de/0x390
__ubsan_handle_type_mismatch_v1+0x41/0x50
udp_sendmsg+0xda2/0x1300
? ip_skb_dst_mtu+0x1f0/0x1f0
? sock_rps_record_flow+0xe/0x200
? inet_send_prepare+0x2d/0x90
sock_sendmsg+0x49/0x80
____sys_sendmsg+0x269/0x370
__sys_sendmsg+0x15e/0x1d0
? syscall_enter_from_user_mode+0xf0/0x1b0
do_syscall_64+0x3d/0xb0
entry_SYSCALL_64_after_hwframe+0x44/0xae
RIP: 0033:0x7f7081a50497
Code: 0c 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b7 0f 1f 00 f3 0f 1e fa 64 8b 04 25 18 00 00 00 85 c0 75 10 b8 2e 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 51 c3 48 83 ec 28 89 54 24 1c 48 89 74 24 10
RSP: 002b:00007ffc153870f8 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
RAX: ffffffffffffffda RBX: 000000000000000c RCX: 00007f7081a50497
RDX: 0000000000000000 RSI: 00007ffc15387140 RDI: 000000000000000c
RBP: 00007ffc15387140 R08: 0000563f29a5e4fc R09: 000000000000cd28
R10: 0000563f29a68a30 R11: 0000000000000246 R12: 000000000000000c
R13: 0000000000000001 R14: 0000563f29a68a30 R15: 0000563f29a5e50c
================================================================================
I don't think we need to call flowi{4,6}_to_flowi() from these functions
because the first member of "struct flowi4" and "struct flowi6" is
struct flowi_common __fl_common;
while the first member of "struct flowi" is
union {
struct flowi_common __fl_common;
struct flowi4 ip4;
struct flowi6 ip6;
struct flowidn dn;
} u;
which should point to the same address without access to "struct flowi".
Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
---
include/net/flow.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/net/flow.h b/include/net/flow.h
index 6f5e70240071..58beb16a49b8 100644
--- a/include/net/flow.h
+++ b/include/net/flow.h
@@ -194,7 +194,7 @@ static inline struct flowi *flowi4_to_flowi(struct flowi4 *fl4)
static inline struct flowi_common *flowi4_to_flowi_common(struct flowi4 *fl4)
{
- return &(flowi4_to_flowi(fl4)->u.__fl_common);
+ return &(fl4->__fl_common);
}
static inline struct flowi *flowi6_to_flowi(struct flowi6 *fl6)
@@ -204,7 +204,7 @@ static inline struct flowi *flowi6_to_flowi(struct flowi6 *fl6)
static inline struct flowi_common *flowi6_to_flowi_common(struct flowi6 *fl6)
{
- return &(flowi6_to_flowi(fl6)->u.__fl_common);
+ return &(fl6->__fl_common);
}
static inline struct flowi *flowidn_to_flowi(struct flowidn *fldn)
--
2.30.2
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] flow: fix object-size-mismatch warning in flowi{4,6}_to_flowi_common()
2021-09-02 5:36 [PATCH] flow: fix object-size-mismatch warning in flowi{4,6}_to_flowi_common() Tetsuo Handa
@ 2021-09-02 10:50 ` patchwork-bot+netdevbpf
0 siblings, 0 replies; 2+ messages in thread
From: patchwork-bot+netdevbpf @ 2021-09-02 10:50 UTC (permalink / raw)
To: Tetsuo Handa
Cc: davem, kuba, nathan, ndesaulniers, netdev, clang-built-linux, hdanton
Hello:
This patch was applied to netdev/net.git (refs/heads/master):
On Thu, 2 Sep 2021 14:36:17 +0900 you wrote:
> Commit 3df98d79215ace13 ("lsm,selinux: pass flowi_common instead of flowi
> to the LSM hooks") introduced flowi{4,6}_to_flowi_common() functions which
> cause UBSAN warning when building with LLVM 11.0.1 on Ubuntu 21.04.
>
> ================================================================================
> UBSAN: object-size-mismatch in ./include/net/flow.h:197:33
> member access within address ffffc9000109fbd8 with insufficient space
> for an object of type 'struct flowi'
> CPU: 2 PID: 7410 Comm: systemd-resolve Not tainted 5.14.0 #51
> Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 02/27/2020
> Call Trace:
> dump_stack_lvl+0x103/0x171
> ubsan_type_mismatch_common+0x1de/0x390
> __ubsan_handle_type_mismatch_v1+0x41/0x50
> udp_sendmsg+0xda2/0x1300
> ? ip_skb_dst_mtu+0x1f0/0x1f0
> ? sock_rps_record_flow+0xe/0x200
> ? inet_send_prepare+0x2d/0x90
> sock_sendmsg+0x49/0x80
> ____sys_sendmsg+0x269/0x370
> __sys_sendmsg+0x15e/0x1d0
> ? syscall_enter_from_user_mode+0xf0/0x1b0
> do_syscall_64+0x3d/0xb0
> entry_SYSCALL_64_after_hwframe+0x44/0xae
> RIP: 0033:0x7f7081a50497
> Code: 0c 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b7 0f 1f 00 f3 0f 1e fa 64 8b 04 25 18 00 00 00 85 c0 75 10 b8 2e 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 51 c3 48 83 ec 28 89 54 24 1c 48 89 74 24 10
> RSP: 002b:00007ffc153870f8 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
> RAX: ffffffffffffffda RBX: 000000000000000c RCX: 00007f7081a50497
> RDX: 0000000000000000 RSI: 00007ffc15387140 RDI: 000000000000000c
> RBP: 00007ffc15387140 R08: 0000563f29a5e4fc R09: 000000000000cd28
> R10: 0000563f29a68a30 R11: 0000000000000246 R12: 000000000000000c
> R13: 0000000000000001 R14: 0000563f29a68a30 R15: 0000563f29a5e50c
> ================================================================================
>
> [...]
Here is the summary with links:
- flow: fix object-size-mismatch warning in flowi{4,6}_to_flowi_common()
https://git.kernel.org/netdev/net/c/b9edbfe1adec
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-09-02 10:51 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-02 5:36 [PATCH] flow: fix object-size-mismatch warning in flowi{4,6}_to_flowi_common() Tetsuo Handa
2021-09-02 10:50 ` patchwork-bot+netdevbpf
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.