On 4/21/13 12:41 PM, Mark Tinguely wrote:
This problem happened locally with a bad inode number from xfs
recovery. xfs_perag_get() can return NULL if given a bad agno.
Most callers of xfs_perag_get() do not check for a NULL before
using the pointer. This patch forces a shutdown of the filesystem
for those callers that do not check the return value rather than
crashing on a dereferenced NULL pointer.
Hi Mark -
I'm curious, what was the callchain when this happened? Was it
during recovery? If so, would aborting recovery be more prudent?
I might be missing something, but I'm not sure how shutting
down avoids a subsequent null ptr deref& crash.
i.e. if a caller does something like:
pag = xfs_perag_get(mp, agno);
spin_lock(&pag->pagb_lock);
shutting down in xfs_perag_get doesn't save us from a
null pag pointer, would it?
Thanks,
-Eric