[apparmor] [PATCH 6/7] tomoyo: Convert from sb_mount to granular mount hooks

Song Liu songliubraving at meta.com
Sun Mar 22 01:06:36 UTC 2026



> On Mar 21, 2026, at 5:54 AM, Tetsuo Handa <penguin-kernel at I-love.SAKURA.ne.jp> wrote:
> 
> On 2026/03/19 3:43, Song Liu wrote:
>> Replace tomoyo_sb_mount() with granular mount hooks. Each hook
>> reconstructs the MS_* flags expected by tomoyo_mount_permission()
>> using the original flags parameter where available.
>> 
>> Key changes:
>> - mount_bind: passes the pre-resolved source path to
>>  tomoyo_mount_acl() via a new dev_path parameter, instead of
>>  re-resolving dev_name via kern_path(). This eliminates a TOCTOU
>>  vulnerability.
>> - mount_new, mount_remount, mount_reconfigure: use the original
>>  mount(2) flags for policy matching.
>> - mount_move: passes pre-resolved paths for both source and
>>  destination.
>> - mount_change_type: passes raw ms_flags directly.
>> 
>> Also removes the unused data_page parameter from
>> tomoyo_mount_permission().
>> 
>> Code generated with the assistance of Claude, reviewed by human.
>> 
>> Signed-off-by: Song Liu <song at kernel.org>
> 
> Basically OK. One question to Al Viro.
> 
> Do you still refuse the idea of resolving dev_path argument before calling LSM hooks
> (the proposal you NAKed at https://lkml.kernel.org/r/20250709102410.GU1880847@ZenIV  )
> despite this series removes security_sb_mount() and security_move_mount() hooks?
> 
>> diff --git a/security/tomoyo/mount.c b/security/tomoyo/mount.c
>> index 322dfd188ada..82ffe7d02814 100644
>> --- a/security/tomoyo/mount.c
>> +++ b/security/tomoyo/mount.c
>> @@ -70,6 +70,7 @@ static bool tomoyo_check_mount_acl(struct tomoyo_request_info *r,
>>  * @dir:      Pointer to "struct path".
>>  * @type:     Name of filesystem type.
>>  * @flags:    Mount options.
>> + * @dev_path: Pre-resolved device/source path. Maybe NULL.
> 
> I guess that we can avoid passing maybe-NULL dev_name if Al Viro can accept
> resolving maybe-NULL dev_path argument before calling LSM hooks.

If I understand the code correctly, tomoyo records requested_dev_name for
new mount. namespace.c, OTOH, does NOT do kern_path() for new mount. This 
is why we keep the maybe-NULL dev_name here. I personally think this is 
the best approach without changing tomoyo behavior. 

Thanks,
Song




More information about the AppArmor mailing list