Re: Potentially unbounded allocations in seq_read?

Tvrtko Ursulin
2013-12-12T13:59:35Z

On Thu, 2013-12-12 at 13:49 +0000, Al Viro wrote:
> On Thu, Dec 12, 2013 at 01:40:40PM +0000, Tvrtko Ursulin wrote:
>
> > So this is the story... task_mmu.c:show_map_vma() calls seq_path. There
> > we have a d_path call which returns -ENAMETOOLONG and keeps doing so
> > even though the buffer grows to huge proportions. It is something on
> > tmpfs, don't know what.
> >
> > But in the meantime, shouldn't seq_path be a bit more considerate on
> > this particular error and not mark the state as "could not fit" forever?
> > Perhaps it would make sense to limit it a bit?
> >
> > Or even more so, on errors _other_ than -ENAMETOOLONG it will at the
> > moment mark the result as "need more space". That also sounds broken to
> > me.
>
> a) *what* errors other than -ENAMETOOLONG?

Is this your way of saying there can't be any other errors from d_path?

> b) d_path() not fitting into 2Mb is definitely a bug. If you really have
> managed to get a dentry tree 1 million levels deep, you have much worse
> problems.
> c) which kernel version it is?

3.10. I can't imagine this is an actual dentry tree somewhere, probably
just a bug of some sort. I'll probably hunt it down completely some time
next week, time permitting.

Regards,

Tvrtko