FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Redhat > Cluster Development

 
 
LinkBack Thread Tools
 
Old 03-16-2011, 07:32 PM
Bob Peterson
 
Default GFS2: write_end error path fails to unlock transaction lock

Hi,

I did an audit of gfs2's transaction glock for bugzilla bug
658619 and ran across this:

In function gfs2_write_end, in the unlikely event that
gfs2_meta_inode_buffer returns an error, the code may forget
to unlock the transaction lock because the "failed" label
appears after the call to function gfs2_trans_end.

Regards,

Bob Peterson
Red Hat File Systems

Signed-off-by: Bob Peterson <rpeterso@redhat.com>
--
fs/gfs2/aops.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/fs/gfs2/aops.c b/fs/gfs2/aops.c
index aad77e4..86870b3 100644
--- a/fs/gfs2/aops.c
+++ b/fs/gfs2/aops.c
@@ -884,8 +884,8 @@ static int gfs2_write_end(struct file *file, struct address_space *mapping,
}

brelse(dibh);
- gfs2_trans_end(sdp);
failed:
+ gfs2_trans_end(sdp);
if (al) {
gfs2_inplace_release(ip);
gfs2_quota_unlock(ip);
 
Old 03-17-2011, 10:46 AM
Steven Whitehouse
 
Default GFS2: write_end error path fails to unlock transaction lock

Hi,

Good spotting, now in the -fixes tree. Thanks,

Steve.

On Wed, 2011-03-16 at 16:32 -0400, Bob Peterson wrote:
> Hi,
>
> I did an audit of gfs2's transaction glock for bugzilla bug
> 658619 and ran across this:
>
> In function gfs2_write_end, in the unlikely event that
> gfs2_meta_inode_buffer returns an error, the code may forget
> to unlock the transaction lock because the "failed" label
> appears after the call to function gfs2_trans_end.
>
> Regards,
>
> Bob Peterson
> Red Hat File Systems
>
> Signed-off-by: Bob Peterson <rpeterso@redhat.com>
> --
> fs/gfs2/aops.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/fs/gfs2/aops.c b/fs/gfs2/aops.c
> index aad77e4..86870b3 100644
> --- a/fs/gfs2/aops.c
> +++ b/fs/gfs2/aops.c
> @@ -884,8 +884,8 @@ static int gfs2_write_end(struct file *file, struct address_space *mapping,
> }
>
> brelse(dibh);
> - gfs2_trans_end(sdp);
> failed:
> + gfs2_trans_end(sdp);
> if (al) {
> gfs2_inplace_release(ip);
> gfs2_quota_unlock(ip);
>
 

Thread Tools




All times are GMT. The time now is 07:05 PM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org