Re: [PATCH] nouveau/dmem: handle kcalloc() allocation failure

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

 



On Mon, 04 Mar 2024 14:14:52 +0200 Jani Nikula wrote:
> >> The kcalloc() in nouveau_dmem_evict_chunk() will return null if
> >> the physical memory has run out. As a result, if we dereference
> >> src_pfns, dst_pfns or dma_addrs, the null pointer dereference bugs
> >> will happen.
> >>
> >> This patch uses stack variables to replace the kcalloc().
> >
> > Won't this blow the stack?  And why not just test the return value of
> > kcalloc?
> 
> VLAs should not be used in the kernel anymore. Building this results in
> a warning due to -Wvla. See 0bb95f80a38f ("Makefile: Globally enable VLA
> warning").
> 
> Error checking and propagation is the way to go.

The GPU is going away. If the kcalloc() in nouveau_dmem_evict_chunk() fail,
we could not evict all pages mapping a chunk. Do you think we should add a
__GFP_NOFAIL flag in kcalloc()? I see the __GFP_NOFAIL flag is used in the
following code:

/*
* _GFP_NOFAIL because the GPU is going away and there
* is nothing sensible we can do if we can't copy the
* data back.
*/
dpage = alloc_page(GFP_HIGHUSER | __GFP_NOFAIL);

Best regards,
Duoming Zhou




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux