From patchwork Fri Dec 24 22:22:37 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jesper Juhl X-Patchwork-Id: 432451 X-Patchwork-Delegate: Trond.Myklebust@netapp.com Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id oBOMWht5029653 for ; Fri, 24 Dec 2010 22:32:44 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752736Ab0LXWc3 (ORCPT ); Fri, 24 Dec 2010 17:32:29 -0500 Received: from swampdragon.chaosbits.net ([90.184.90.115]:22491 "EHLO swampdragon.chaosbits.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752515Ab0LXWc3 (ORCPT ); Fri, 24 Dec 2010 17:32:29 -0500 Received: by swampdragon.chaosbits.net (Postfix, from userid 1000) id 7E2FA9403D; Fri, 24 Dec 2010 23:22:37 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by swampdragon.chaosbits.net (Postfix) with ESMTP id 776119403B; Fri, 24 Dec 2010 23:22:37 +0100 (CET) Date: Fri, 24 Dec 2010 23:22:37 +0100 (CET) From: Jesper Juhl To: linux-nfs@vger.kernel.org cc: Trond Myklebust , linux-kernel@vger.kernel.org Subject: [PATCH] NFS: Don't leak in nfs_proc_symlink() Message-ID: User-Agent: Alpine 2.00 (LNX 1167 2008-08-23) MIME-Version: 1.0 Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter1.kernel.org [140.211.167.41]); Fri, 24 Dec 2010 22:32:44 +0000 (UTC) diff --git a/fs/nfs/proc.c b/fs/nfs/proc.c index 58e7f84..9e81d9b 100644 --- a/fs/nfs/proc.c +++ b/fs/nfs/proc.c @@ -458,7 +458,7 @@ nfs_proc_symlink(struct inode *dir, struct dentry *dentry, struct page *page, fattr = nfs_alloc_fattr(); status = -ENOMEM; if (fh == NULL || fattr == NULL) - goto out; + goto out_free; status = rpc_call_sync(NFS_CLIENT(dir), &msg, 0); nfs_mark_for_revalidate(dir); @@ -471,6 +471,7 @@ nfs_proc_symlink(struct inode *dir, struct dentry *dentry, struct page *page, if (status == 0) status = nfs_instantiate(dentry, fh, fattr); +out_free: nfs_free_fattr(fattr); nfs_free_fhandle(fh); out: