Files
linux/drivers
Ian Abbott f39f87e9ea staging: comedi: adl_pci9118: don't overallocate DMA buffer
The last parameter of `__get_free_pages()` is log2 (the 'order') of the
number of pages to be allocated.  This driver seems to think it is the
linear number of pages, so `pci9118_alloc_dma()` first tries to allocate
16 pages, but only uses 4 of them, setting the buffer size to PAGE_SIZE
multiplied by the 'order'.  If the allocation fails, it tries
progressively smaller orders, down to 0.  If the allocation at order 0
succeeds, the buffer size is set to 0, which is likely to cause
problems.

Set the buffer size to `PAGE_SIZE` shifted left by the allocation order.
Since the maximum buffer size previously used was 4, start with an
allocation order of 2 instead of 4.  Rename the `pages` member of
`struct pci9118_dmabuf` (and the local variable in
`pci9118_alloc_dma()`) to `order` to make it clearer what it is.

Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-09-19 15:36:25 -07:00
..
2014-07-23 10:18:07 -07:00
2014-07-23 00:51:30 +02:00
2014-09-14 19:33:47 -07:00
2014-09-04 19:59:42 +02:00
2014-08-05 21:16:46 -07:00
2014-08-15 17:06:40 -04:00
2014-09-14 20:52:25 +01:00
2014-08-08 15:57:28 -07:00
2014-07-30 00:23:09 +02:00
2014-07-17 14:58:43 +02:00
2014-08-25 15:39:22 -04:00
2014-09-08 16:33:56 -07:00