[Karmic] Fix kernel crash with jfs

Tim Gardner tim.gardner at canonical.com
Thu Jul 23 14:45:48 UTC 2009


Andy Whitcroft wrote:
> On Thu, Jul 23, 2009 at 04:29:52PM +0200, Stefan Bader wrote:
>> Just found the solution to that nasty bug#396780 which is caused by jfs
>> releasing some acl before returning. The patch has been verified to be working
>> and I will submit it upstream ASAP.
>>
> 
>> From a345a80ca7a926c9c6e322a1e8add4817c834d0f Mon Sep 17 00:00:00 2001
>> From: Stefan Bader <stefan.bader at canonical.com>
>> Date: Thu, 23 Jul 2009 11:26:05 +0200
>> Subject: [PATCH] jfs: Fix early release of acl in jfs_get_acl
>>
>> BugLink: http://bugs.launchpad.net/ubuntu/+bug/396780
>>
>> Commit 073aaa1b142461d91f83da66db1184d7c1b1edea "helpers for acl
>> caching + switch to those" introduced new helper function for
>> acl handling but seems to introduce a regression for jfs as the
>> acl is released before returning it to the caller, instead of
>> leaving this for the caller to do.
>> This causes the acl object to be used after freeing it, leading
>> to kernel panics at completely different places.
>>
>> Thanks to Christophe Dumez for reporting and bisecting into this.
>>
>> Reported-by: Christophe Dumez <dchris at gmail.com>
>> Signed-off-by: Stefan Bader <stefan.bader at canonical.com>
>> ---
>>  fs/jfs/acl.c |    4 +---
>>  1 files changed, 1 insertions(+), 3 deletions(-)
>>
>> diff --git a/fs/jfs/acl.c b/fs/jfs/acl.c
>> index f272bf0..3c88d1b 100644
>> --- a/fs/jfs/acl.c
>> +++ b/fs/jfs/acl.c
>> @@ -67,10 +67,8 @@ static struct posix_acl *jfs_get_acl(struct inode *inode, int type)
>>  		acl = posix_acl_from_xattr(value, size);
>>  	}
>>  	kfree(value);
>> -	if (!IS_ERR(acl)) {
>> +	if (!IS_ERR(acl))
>>  		set_cached_acl(inode, type, acl);
>> -		posix_acl_release(acl);
>> -	}
>>  	return acl;
>>  }
> 
> I reviewed all of the callers of jfs_get_acl and they are assuming that
> they have a reference on the acl and should be releasing it.  So this
> change looks right to me.
> 
> ACK
> 
> For upstream:
> 
> Acked-by: Andy Whitcroft <apw at canonical.com>
> 
> -apw
> 

Andy is right. The semantics are pretty simple. ACK for Karmic.

-- 
Tim Gardner tim.gardner at canonical.com




More information about the kernel-team mailing list