On 5/28/2019 1:18 PM, David Howells wrote: > Casey Schaufler <ca...@schaufler-ca.com> wrote: > >>> static const struct fs_parameter_spec smack_param_specs[] = { >>> + fsparam_string("fsdef", Opt_fsdefault), >>> fsparam_string("fsdefault", Opt_fsdefault), >>> fsparam_string("fsfloor", Opt_fsfloor), >>> fsparam_string("fshat", Opt_fshat), >>> >>> but that all the option names in that table *do* need prefixing with >>> "smack". > Actually, you're right, we do need to add that *and* prefix it with "smack". > >> I'm not sure I follow the logic, because "mount -o smackfsdefault=Pop" >> does what I would expect it to. > Yes, I'm sure it does - for the cases you're testing - but it's filesystem and > syscall dependent. None of the filesystems currently ported to the mount API > upstream override ->parse_monolithic(), but that changes with nfs, shmem and > coda and will change with cifs too. > > It also changes if you use fsconfig() to supply the options because that goes > through a different LSM hook (it uses fs_context_parse_param rather than > sb_eat_lsm_opts). > >>> The way you enter the LSM is going to depend on whether >>> generic_parse_monolithic() is called. You're only going to enter this way >>> if mount(2) is the syscall of entry and the filesystem doesn't override >>> the ->parse_monolithic() option (none in the upstream kernel). >> So you're saying that the code works for the mount(2) case, >> but won't work for some other case? Are you planning a fix? >> Will that fix include restoration of smackfsdef? > I can do a fix, but testing it is a pain.
I will test a fix if you point me to it. I need it for 5.1 and 5.2. > > David