Re: [PATCH 6/7] firmware_class: add "fd" input file

Kees Cook
2014-07-21T17:27:39Z

On Mon, Jul 21, 2014 at 9:36 AM, Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:
> On Mon, Jul 21, 2014 at 08:43:07AM -0700, Kees Cook wrote:
>> On Mon, Jul 21, 2014 at 08:26:35AM -0700, Greg Kroah-Hartman wrote:
>> > On Mon, Jul 21, 2014 at 08:08:16AM -0700, Kees Cook wrote:
>> > > Perhaps it would be easier if I also sent the patch to udev's helper,
>> > > so you could see how I propose handling the userspace change to using
>> > > the new interface?
>> >
>> > As there is no more "udev firmware helper", I don't know what you would
>> > be patching here. Firmware should always be loaded by the kernel
>> > directly, udev isn't involved anyore at all.
>> >
>> > confused,
>> >
>> > greg k-h
>>
>> The kernel _can_ load directly (when the paths are configured correctly),
>> but I'm not sure why you say udev isn't involved any more. It's been like
>> this for years, and even the latest systemd shows the udev rule is still in
>> place:
>> http://cgit.freedesktop.org/systemd/systemd/tree/rules/50-firmware.rules
>> and that the firmware loader is still in the source tree:
>> http://cgit.freedesktop.org/systemd/systemd/tree/src/udev/udev-builtin-firmware.c
>
> Ah, I thought that I had seen patches to delete this code on the systemd
> mailing list in the past, I didn't realize they hadn't been accepted
> yet.
>
> But, with my current tree, in linux-next, it's really hard to select the
> "external firmware loader" on purpose, as we want people to use the
> in-kernel one if at all possible, and only fall back to the "legacy"
> udev userspace loader if they are running on old userspace systems.

Heh. Where non-legacy means running a userspace with unaccepted
systemd patches? That's some serious time-travel. :)

>> Here's the patch for the new interface...
>
> I'd really not like to add a new interface for this model when we are
> trying to delete it entirely. Why not just rely on the in-kernel loader
> instead for this new feature?

Yeah, I see what you're saying. Obviously if the udev loader is going
to vanish entirely, it makes no sense to add the "fd" interface. I'll
keep the last 3 patches in the series in my tree for backporting
purposes, but since the LSM hook is still useful for origin/content
validation, I'd still like to see those go in. Though it sounds like I
should do that through the security-next tree?

applied:
doc: fix minor typos in firmware_class README
test: add firmware_class loader test

hopefully for security-next:
security: introduce kernel_fw_from_file hook
firmware_class: perform new LSM checks

I'll keep these external for backporting to "legacy" kernels/userspace:
firmware_class: extract start loading logic
firmware_class: add "fd" input file
test: add "fd" firmware loading test to selftests

Does that look okay?

-Kees

--
Kees Cook
Chrome OS Security