[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <44CF0CDE.2080500@l4x.org>
Date: Tue, 01 Aug 2006 10:12:14 +0200
From: Jan Dittmer <jdi@....org>
To: Joe Jin <lkmaillist@...il.com>
CC: kernel <linux@...center.cn>, Nathan Scott <nathans@....com>,
linux-kernel@...r.kernel.org
Subject: Re: XFS Bug null pointer dereference in xfs_free_ag_extent
Joe Jin schrieb:
> From the information, I think it caused by (args.agbp == NULL).
> get rid of, we'll find the call trace should panic:
> xfs_free_extent
> |_ xfs_free_ag_extent => here args.agbp= NULL;
> |_ xfs_btree_init_cursor()
> |_ agf = XFS_BUF_TO_AGF(agbp); => (xfs_agf_t
> *)XFS_BUF_PTR(arbp)
> |_ (xfs_caddr_t)((agbp)->b_addr) : but
> here, agbp is NULL
> so it caused the oops.
> Non debug option, and the oops occured at xfs_btree_init_cursor().
>
Probably caused by this part of the diff from Nathan's earlier mail:
--- 8558226281c45a61d7a0bc056505246e705a372b
+++ 22af489d3f346c7bb4488cdcf1ee91e59e48ddf3
--- fs/xfs/xfs_alloc.c
+++ fs/xfs/xfs_alloc.c
@@ -1951,8 +1951,14 @@ xfs_alloc_fix_freelist(
* the restrictions correctly. Can happen for free calls
* on a completely full ag.
*/
- if (targs.agbno == NULLAGBLOCK)
+ if (targs.agbno == NULLAGBLOCK) {
+ if (!(flags & XFS_ALLOC_FLAG_FREEING)) {
+ xfs_trans_brelse(tp, agflbp);
+ args->agbp = NULL;
+ return 0;
+ }
break;
+ }
/*
* Put each allocated block on the list.
*/
Jan
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists