From: Jan Kara I'm sending a fix which fixes potential problems (dropping references which were not acquired) when dquot_transfer() fails. 25-akpm/fs/dquot.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) diff -puN fs/dquot.c~quota-reference-drop-fix fs/dquot.c --- 25/fs/dquot.c~quota-reference-drop-fix Wed May 7 15:30:54 2003 +++ 25-akpm/fs/dquot.c Wed May 7 15:30:54 2003 @@ -1011,9 +1011,12 @@ warn_put_all: spin_unlock(&dq_data_lock); flush_warnings(transfer_to, warntype); - for (cnt = 0; cnt < MAXQUOTAS; cnt++) - if (transfer_from[cnt] != NODQUOT) + for (cnt = 0; cnt < MAXQUOTAS; cnt++) { + if (ret == QUOTA_OK && transfer_from[cnt] != NODQUOT) dqput(transfer_from[cnt]); + if (ret == NO_QUOTA && transfer_to[cnt] != NODQUOT) + dqput(transfer_to[cnt]); + } up_write(&sb_dqopt(inode->i_sb)->dqptr_sem); return ret; } _