From: Martin KaFai Lau <martin.lau@linux.dev>
To: bpf@vger.kernel.org
Cc: Alexei Starovoitov <ast@kernel.org>,
Andrii Nakryiko <andrii@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
kernel-team@meta.com
Subject: Re: [PATCH v2 bpf-next] libbpf: btf_dump_type_data_check_overflow needs to consider BTF_MEMBER_BITFIELD_SIZE
Date: Thu, 27 Apr 2023 19:58:48 -0700 [thread overview]
Message-ID: <6d388abe-4a08-7d71-ad43-237562841949@linux.dev> (raw)
In-Reply-To: <20230428013638.1581263-1-martin.lau@linux.dev>
On 4/27/23 6:36 PM, Martin KaFai Lau wrote:
> From: Martin KaFai Lau <martin.lau@kernel.org>
>
> The btf_dump/struct_data selftest is failing with:
> test_btf_dump_struct_data:FAIL:unexpected return value dumping fs_context unexpected unexpected return value dumping fs_context: actual -7 != expected 264
>
> The reason is in btf_dump_type_data_check_overflow(). It does not use
> BTF_MEMBER_BITFIELD_SIZE from the struct's member (btf_member). Instead,
> it is using the enum size which is 4. It had been working till the recent
> commit 4e04143c869c ("fs_context: drop the unused lsm_flags member")
> removed an integer member which also removed the 4 bytes padding at the end
> of the fs_context. Missing this 4 bytes padding exposed this bug.
> In particular, when btf_dump_type_data_check_overflow() reaches
> the member 'phase', -E2BIG is returned.
>
> The fix is to pass bit_sz to btf_dump_type_data_check_overflow().
> In btf_dump_type_data_check_overflow(), it does a different size
> check when bit_sz is not zero.
>
> The current fs_context:
>
> [3600] ENUM 'fs_context_purpose' encoding=UNSIGNED size=4 vlen=3
> 'FS_CONTEXT_FOR_MOUNT' val=0
> 'FS_CONTEXT_FOR_SUBMOUNT' val=1
> 'FS_CONTEXT_FOR_RECONFIGURE' val=2
> [3601] ENUM 'fs_context_phase' encoding=UNSIGNED size=4 vlen=7
> 'FS_CONTEXT_CREATE_PARAMS' val=0
> 'FS_CONTEXT_CREATING' val=1
> 'FS_CONTEXT_AWAITING_MOUNT' val=2
> 'FS_CONTEXT_AWAITING_RECONF' val=3
> 'FS_CONTEXT_RECONF_PARAMS' val=4
> 'FS_CONTEXT_RECONFIGURING' val=5
> 'FS_CONTEXT_FAILED' val=6
> [3602] STRUCT 'fs_context' size=264 vlen=21
> 'ops' type_id=3603 bits_offset=0
> 'uapi_mutex' type_id=235 bits_offset=64
> 'fs_type' type_id=872 bits_offset=1216
> 'fs_private' type_id=21 bits_offset=1280
> 'sget_key' type_id=21 bits_offset=1344
> 'root' type_id=781 bits_offset=1408
> 'user_ns' type_id=251 bits_offset=1472
> 'net_ns' type_id=984 bits_offset=1536
> 'cred' type_id=1785 bits_offset=1600
> 'log' type_id=3621 bits_offset=1664
> 'source' type_id=42 bits_offset=1792
> 'security' type_id=21 bits_offset=1856
> 's_fs_info' type_id=21 bits_offset=1920
> 'sb_flags' type_id=20 bits_offset=1984
> 'sb_flags_mask' type_id=20 bits_offset=2016
> 's_iflags' type_id=20 bits_offset=2048
> 'purpose' type_id=3600 bits_offset=2080 bitfield_size=8
> 'phase' type_id=3601 bits_offset=2088 bitfield_size=8
> 'need_free' type_id=67 bits_offset=2096 bitfield_size=1
> 'global' type_id=67 bits_offset=2097 bitfield_size=1
> 'oldapi' type_id=67 bits_offset=2098 bitfield_size=1
>
> Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
Missed the fixes tag.
Fixes: 920d16af9b42 ("libbpf: BTF dumper support for typed data")
next prev parent reply other threads:[~2023-04-28 2:58 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-28 1:36 [PATCH v2 bpf-next] libbpf: btf_dump_type_data_check_overflow needs to consider BTF_MEMBER_BITFIELD_SIZE Martin KaFai Lau
2023-04-28 2:26 ` Yonghong Song
2023-04-28 2:58 ` Martin KaFai Lau [this message]
2023-05-01 13:50 ` patchwork-bot+netdevbpf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=6d388abe-4a08-7d71-ad43-237562841949@linux.dev \
--to=martin.lau@linux.dev \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=kernel-team@meta.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.