On 4/22/13 8:45 AM, Mark Tinguely wrote:
> On 04/21/13 16:55, Eric Sandeen wrote:
>> 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);
>> shutting down in xfs_perag_get doesn't save us from a
>> null pag pointer, would it?
> You are correct, we have to exit the routine(s) to avoid the dereference. Let
> the callers handle the error.
> Sorry for the noise.
No problem, glad I'm useful on the rare occasion. ;)
Can you share the backtrace on the null deref you saw?