Re: [PATCH] lib: idr: fix out-of-bounds pointer dereference

Lai Jiangshan
2014-06-24T07:47:57Z

326cf0f0f308 ("idr: fix top layer handling") enlarged the pa array.
But the additional "+1" space is only used in id-allocation, it is free
in other usage, (paa may point to the additional "+1" space, but not dereference it).
so you can reuse it.

In the 3 functions your patch touched:
- struct idr_layer ***paa = &pa[0];
+ struct idr_layer ***paa = &pa[1];

I don't reject your patch, I had review it.

Reviewed-by: Lai Jiangshan <laijs@cn.fujitsu.com>

The reason why I'm still muttering here is that I wish a simple solution
to fix the problem. And:
1) your patch also makes use of the additional "+1" @pa space: *++paa = p
2) your patch may slight enlarge the function body.
3) I think you patch reduces the readability a little although the idr code
itself is already shit.