Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: drmkms panic



On Tue, 2 Aug 2016, coypu%SDF.ORG@localhost wrote:
> The problem is pretty obvious. netbsd kmem_alloc doesn't like allocating 
> zero-sized things, whereas linux kmalloc does.

Please, forgive my ignorance, I'm just asking out of curiosity. However, 
if kmalloc() isn't available at all what happened during the port? Did 
folks convert all the kmalloc() calls to kmem_alloc() ? The only reason I 
ask is that I'm supposing that one could wrapper kmalloc() to call 
kmem_alloc(1, KM_NOSLEEP); but I think that could cause more problems 
later when you tried to kmem_free() it and the code was off-by-one byte. 
That's probably not even close as a solution, but I whenever I see a chink 
in the namespace, I go for it :-)  I doubt that kind of thing would be 
considered quality code, anyhow. 

Incidentally, I noticed that there is a reference to this issue in the man 
page but related to Solaris:

Unlike Solaris, kmem_alloc(0, flags) is illegal.

> Now for patching the code to return a sane value provided a zero size...

I'm asking myself why that would be OK in the first place, really. I guess 
I could see someone creating a bunch of pointers with nothing allocated 
then using realloc() to change them as needed, but is that even possible 
with wired kernel memory? 

-Swift


Home | Main Index | Thread Index | Old Index