NFSv4.1: put_layout_hdr can remove nfsi->layout
authorAndy Adamson <andros@netapp.com>
Tue, 1 Mar 2011 01:34:07 +0000 (01:34 +0000)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Fri, 11 Mar 2011 20:38:41 +0000 (15:38 -0500)
Prevents an Oops triggered by CB_LAYOUTRECALL and LAYOUTGET race on a
pnfs_layout_hdr first pnfs_layout_segment.

Signed-off-by: Andy Adamson <andros@netapp.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/nfs/pnfs.c

index 0f5b66f..7d031cd 100644 (file)
@@ -768,7 +768,7 @@ pnfs_update_layout(struct inode *ino,
        put_layout_hdr(lo);
 out:
        dprintk("%s end, state 0x%lx lseg %p\n", __func__,
-               nfsi->layout->plh_flags, lseg);
+               nfsi->layout ? nfsi->layout->plh_flags : -1, lseg);
        return lseg;
 out_unlock:
        spin_unlock(&ino->i_lock);