lkml.org 
[lkml]   [2021]   [Apr]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH 07/13] Rust: Kernel crate
    On Wed, Apr 14, 2021 at 11:47 AM <ojeda@kernel.org> wrote:
    >
    > +#[alloc_error_handler]
    > +fn oom(_layout: Layout) -> ! {
    > + panic!("Out of memory!");
    > +}
    > +
    > +#[no_mangle]
    > +pub fn __rust_alloc_error_handler(_size: usize, _align: usize) -> ! {
    > + panic!("Out of memory!");
    > +}

    Again, excuse my lack of internal Rust knowledge, but when do these
    end up being an issue?

    If the Rust compiler ends up doing hidden allocations, and they then
    cause panics, then one of the main *points* of Rustification is
    entirely broken. That's 100% the opposite of being memory-safe at
    build time.

    An allocation failure in some random driver must never ever be
    something that the compiler just turns into a panic. It must be
    something that is caught and handled synchronously and results in an
    ENOMEM error return.

    So the fact that the core patches have these kinds of

    panic!("Out of memory!");

    things in them as part of just the support infrastructure makes me go
    "Yeah, that's fundamentally wrong".

    And if this is some default that is called only when the Rust code
    doesn't have error handling, then once again - I think it needs to be
    a *build-time* failure, not a runtime one. Because having unsafe code
    that will cause a panic only under very special situations that are
    hard to trigger is about the worst possible case.

    Linus

    \
     
     \ /
      Last update: 2021-04-14 21:32    [W:5.217 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site