lkml.org 
[lkml]   [2010]   [Aug]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] nfsd: fix NULL dereference in nfsd_statfs()
    On Fri, Aug 13, 2010 at 03:53:49PM +0200, Takashi Iwai wrote:
    > The commit ebabe9a9001af0af56c0c2780ca1576246e7a74b
    > pass a struct path to vfs_statfs
    > introduced the struct path initialization, and this seems to trigger
    > an Oops on my machine.
    >
    > fh_dentry field may be NULL and set later in fh_verify(), thus the
    > initialization of path must be after fh_verify().

    Thanks, the patch looks good.


    Reviewed-by: Christoph Hellwig <hch@lst.de>

    > diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
    > index 96360a8..661a6cf 100644
    > --- a/fs/nfsd/vfs.c
    > +++ b/fs/nfsd/vfs.c
    > @@ -2033,15 +2033,17 @@ out:
    > __be32
    > nfsd_statfs(struct svc_rqst *rqstp, struct svc_fh *fhp, struct kstatfs *stat, int access)
    > {
    > - struct path path = {
    > - .mnt = fhp->fh_export->ex_path.mnt,
    > - .dentry = fhp->fh_dentry,
    > - };
    > __be32 err;
    >
    > err = fh_verify(rqstp, fhp, 0, NFSD_MAY_NOP | access);
    > - if (!err && vfs_statfs(&path, stat))
    > - err = nfserr_io;
    > + if (!err) {
    > + struct path path = {
    > + .mnt = fhp->fh_export->ex_path.mnt,
    > + .dentry = fhp->fh_dentry,
    > + };
    > + if (vfs_statfs(&path, stat))
    > + err = nfserr_io;
    > + }
    > return err;
    > }
    >
    > --
    > 1.7.2.1
    ---end quoted text---


    \
     
     \ /
      Last update: 2010-08-13 16:45    [W:0.045 / U:1.388 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site