lkml.org 
[lkml]   [2022]   [Jun]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH] [RFC] Initialization of unused function parameters
    On Tue, Jun 14, 2022 at 6:48 PM Linus Torvalds
    <torvalds@linux-foundation.org> wrote:
    >
    > On Tue, Jun 14, 2022 at 7:49 AM Alexander Potapenko <glider@google.com> wrote:
    > >
    > > The bigger question I want to raise here is whether we want to
    > > discourage passing uninitialized variables to functions in the kernel
    > > altogether.
    >
    > I'm assuming you mean pass by reference.

    No, sorry for being unclear. I mean passing by value.
    In the given example the prototype of step_into looks as follows (see
    https://elixir.bootlin.com/linux/latest/source/fs/namei.c#L1846):

    static const char *step_into(struct nameidata *nd, int flags, struct
    dentry *dentry, struct inode *inode, unsigned seq);

    , and the local variables `struct inode *inode` and `unsigned seq` are
    being passed to it by value, i.e. in certain cases the struct inode
    pointer and the unsigned seq are uninitialized.

    Does that change anything?

    > Some functions are really fundamentally about initializing things, and
    > expect uninitialized allocations.

    Agreed, there are a lot of functions around that initialize one struct
    or another, they are out of the scope.


    > What I think might be a good model is to be able to mark such
    > arguments as "must be initialized by callee".

    This sounds interesting. In the given example I would suggest that the
    call to lookup_fast()
    (https://elixir.bootlin.com/linux/latest/source/fs/namei.c#L2016)
    should be initializing &inode and &seq, so that it is guaranteed that
    they are passed initialized into step_into().


    --
    Alexander Potapenko
    Software Engineer

    Google Germany GmbH
    Erika-Mann-Straße, 33
    80636 München

    Geschäftsführer: Paul Manicle, Liana Sebastian
    Registergericht und -nummer: Hamburg, HRB 86891
    Sitz der Gesellschaft: Hamburg

    Diese E-Mail ist vertraulich. Falls Sie diese fälschlicherweise
    erhalten haben sollten, leiten Sie diese bitte nicht an jemand anderes
    weiter, löschen Sie alle Kopien und Anhänge davon und lassen Sie mich
    bitte wissen, dass die E-Mail an die falsche Person gesendet wurde.


    This e-mail is confidential. If you received this communication by
    mistake, please don't forward it to anyone else, please erase all
    copies and attachments, and please let me know that it has gone to the
    wrong person.

    \
     
     \ /
      Last update: 2022-06-14 20:09    [W:4.608 / U:0.068 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site