User: | Jiri Slaby |
Error type: | Leaving function in locked state |
Error type description: | Some lock is not unlocked on all paths of a function, so it is leaked |
File location: | fs/xfs/xfs_inode_item.c |
Line in file: | 1019 |
Project: | Linux Kernel |
Project version: | 2.6.28 |
Tools: |
Stanse
(1.2)
|
Entered: | 2012-03-02 21:35:18 UTC |
989 * the lock since it's cheaper, and then we recheck while 990 * holding the lock before removing the inode from the AIL. 991 */ 992 if (iip->ili_logged && 993 (iip->ili_item.li_lsn == iip->ili_flush_lsn)) { 994 spin_lock(&ip->i_mount->m_ail_lock); 995 if (iip->ili_item.li_lsn == iip->ili_flush_lsn) { 996 /* 997 * xfs_trans_delete_ail() drops the AIL lock. 998 */ 999 xfs_trans_delete_ail(ip->i_mount, 1000 (xfs_log_item_t*)iip); 1001 } else { 1002 spin_unlock(&ip->i_mount->m_ail_lock); 1003 } 1004 } 1005 1006 iip->ili_logged = 0; 1007 1008 /* 1009 * Clear the ili_last_fields bits now that we know that the 1010 * data corresponding to them is safely on disk. 1011 */ 1012 iip->ili_last_fields = 0; 1013 1014 /* 1015 * Release the inode's flush lock since we're done with it. 1016 */ 1017 xfs_ifunlock(ip); 1018 1019 return; 1020} 1021 1022/* 1023 * This is the inode flushing abort routine. It is called 1024 * from xfs_iflush when the filesystem is shutting down to clean 1025 * up the inode state. 1026 * It is responsible for removing the inode item 1027 * from the AIL if it has not been re-logged, and unlocking the inode's 1028 * flush lock. 1029 */