mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
JFS: Fix race in txLock
TxAnchor.anon_list is protected by jfsTxnLock (TXN_LOCK), but there was a place in txLock() that was removing an entry from the list without holding the spinlock. Signed-off-by: Dave Kleikamp <shaggy@austin.ibm.com>
This commit is contained in:
parent
a5c96cab8f
commit
8a9cd6d676
@ -657,7 +657,9 @@ struct tlock *txLock(tid_t tid, struct inode *ip, struct metapage * mp,
|
||||
/* only anonymous txn.
|
||||
* Remove from anon_list
|
||||
*/
|
||||
TXN_LOCK();
|
||||
list_del_init(&jfs_ip->anon_inode_list);
|
||||
TXN_UNLOCK();
|
||||
}
|
||||
jfs_ip->atlhead = tlck->next;
|
||||
} else {
|
||||
|
@ -114,6 +114,8 @@ static void jfs_destroy_inode(struct inode *inode)
|
||||
{
|
||||
struct jfs_inode_info *ji = JFS_IP(inode);
|
||||
|
||||
BUG_ON(!list_empty(&ji->anon_inode_list));
|
||||
|
||||
spin_lock_irq(&ji->ag_lock);
|
||||
if (ji->active_ag != -1) {
|
||||
struct bmap *bmap = JFS_SBI(inode->i_sb)->bmap;
|
||||
|
Loading…
Reference in New Issue
Block a user