lkml.org 
[lkml]   [2018]   [Feb]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 3.16 052/136] coda: fix 'kernel memory exposure attempt' in fsync
    3.16.54-rc1 review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Jan Harkes <jaharkes@cs.cmu.edu>

    commit d337b66a4c52c7b04eec661d86c2ef6e168965a2 upstream.

    When an application called fsync on a file in Coda a small request with
    just the file identifier was allocated, but the declared length was set
    to the size of union of all possible upcall requests.

    This bug has been around for a very long time and is now caught by the
    extra checking in usercopy that was introduced in Linux-4.8.

    The exposure happens when the Coda cache manager process reads the fsync
    upcall request at which point it is killed. As a result there is nobody
    servicing any further upcalls, trapping any processes that try to access
    the mounted Coda filesystem.

    Signed-off-by: Jan Harkes <jaharkes@cs.cmu.edu>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    ---
    fs/coda/upcall.c | 3 +--
    1 file changed, 1 insertion(+), 2 deletions(-)

    --- a/fs/coda/upcall.c
    +++ b/fs/coda/upcall.c
    @@ -446,8 +446,7 @@ int venus_fsync(struct super_block *sb,
    UPARG(CODA_FSYNC);

    inp->coda_fsync.VFid = *fid;
    - error = coda_upcall(coda_vcp(sb), sizeof(union inputArgs),
    - &outsize, inp);
    + error = coda_upcall(coda_vcp(sb), insize, &outsize, inp);

    CODA_FREE(inp, insize);
    return error;
    \
     
     \ /
      Last update: 2018-02-11 06:21    [W:4.338 / U:0.472 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site