On Mon, 30 Jan 2012 10:16:39 -0800, Tejun Heo tj@kernel.org wrote:
On Mon, Jan 30, 2012 at 12:12:18PM -0600, Christoph Lameter wrote:
I thought it didn't. I rememer thinking about this and determining that NULL can't be allocated for dynamic addresses. Maybe I'm imagining things. Anyways, if it can return NULL for valid allocation, it is a bug and should be fixed.
I dont see anything that would hinder an arbitrary value to be returned. NULL is also used for the failure case. Definitely a bug.
Given the address translation we do and kernel image layout, I don't think this can happen on x86. It may theoretically possible on other archs tho. Anyways, yeah, this one needs improving.
I tried setting the lower bit on all percpu ptrs, but since non-dynamic percpu vars could have odd alignments, that fails in general.
We don't have returned addr >= PAGE_SIZE guarantee yet but I'm fairly sure that's the only acceptable direction if we want any improvement in this area.
The ZERO_SIZE_PTR patch would not make the situation that much worse.
I'm not objecting to marking zero-sized allocations per-se. I'm saying the patch is pointless at this point. It doesn't contribute anything while giving the illusion of better error checking than we actually do. Let's do it when it can actually work.
Disagree: This patch works. It allows zero-size per-cpu allocs, like the other allocators. Nor does it fail in practice.
We should do better, but the perfect is the enemy of the good.
Cheers, Rusty.