From: Ian Abbott Date: Fri, 12 Sep 2014 11:19:55 +0000 (+0100) Subject: staging: comedi: addi_apci_3120: don't overallocate DMA buffer X-Git-Tag: fixes-for-v3.18-merge-window~15^2~431 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9c97e588d82e90ca74488cd16e8f804cbec75978;p=pandora-kernel.git staging: comedi: addi_apci_3120: 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 `apci3120_auto_attach()` 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 `ui_DmaBufferPages` member of `struct addi_private` to `ui_DmaBufferPageOrder` and rename the `pages` local variable to `order` to make it clearer what it is. Note: `struct addi_private` is used by some other ADDI-DATA drivers as well, but this is the only one using the affected members. Signed-off-by: Ian Abbott Reviewed-by: H Hartley Sweeten Signed-off-by: Greg Kroah-Hartman --- Reading git-diff-tree failed