Re: XFS Bug null pointer dereference in xfs_free_ag_extent

From: Jan Dittmer
Date: Tue Aug 01 2006 - 04:10:48 EST


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@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/