lkml.org 
[lkml]   [2009]   [Apr]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 20/30] microblaze_mmu_v1: uaccess MMU update
    Andrew Morton wrote:
    > On Mon, 27 Apr 2009 10:32:09 +0200 monstr@monstr.eu wrote:
    >
    >> +#define __clear_user(addr, n) (memset((void *)(addr), 0, (n)), 0)
    >
    > __clear_user() already takes a void* argument, so the cast is hopefully
    > unneeded and undesirable. The same applies to many other
    > architectures. If someone is passing a non-pointer type to
    > __clear_user() then that's potentially a bad thing which we want to
    > know about.
    >

    Please look at fs/signalfd.c:72. that's the reason why I need __clear_user macro
    first parameter is pointer to struct signalfd_siginfo __user.

    memset function has the following parameters.
    void *memset(void *v_src, int c, __kernel_size_t n)

    That's why is cast there. I think that I have to add __force parameter
    because without it is there address space mishmash.

    Without cast
    CHECK fs/signalfd.c
    fs/signalfd.c:72:8: warning: incorrect type in argument 1 (different address spaces)
    fs/signalfd.c:72:8: expected void *<noident>
    fs/signalfd.c:72:8: got struct signalfd_siginfo [noderef] <asn:1>*uinfo

    With current cast (void *)
    CHECK fs/signalfd.c
    fs/signalfd.c:72:8: warning: cast removes address space of expression

    Here is that change which remove address space problem.

    #define __clear_user(addr, n) (memset((__force void *)(addr), 0, (n)), 0)

    Am I right?

    The same mishmash is for memset_fromio/memset_toio and maybe some others which I want to fix too.

    Thanks,
    Michal


    > IOW, someone screwed up and everyone copied it :(
    >






    --
    Michal Simek, Ing. (M.Eng)
    w: www.monstr.eu p: +42-0-721842854


    \
     
     \ /
      Last update: 2009-04-29 12:15    [W:4.135 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site