Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

comedi: isadma: use kzalloc_flex

Switched struct pointer member to a flexible array member to get rid of
kzalloc_objs as there's no need for them to be separately allocated.

AAdded __counted_by for extra runtime analysis.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://patch.msgid.link/20260311232459.18407-1-rosenp@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Rosen Penev and committed by
Greg Kroah-Hartman
6c561848 b06e7819

+8 -15
+7 -14
drivers/comedi/drivers/comedi_isadma.c
··· 161 161 if (n_desc < 1 || n_desc > 2) 162 162 goto no_dma; 163 163 164 - dma = kzalloc_obj(*dma); 164 + dma = kzalloc_flex(*dma, desc, n_desc); 165 165 if (!dma) 166 166 goto no_dma; 167 167 168 - desc = kzalloc_objs(*desc, n_desc); 169 - if (!desc) 170 - goto no_dma; 171 - dma->desc = desc; 172 168 dma->n_desc = n_desc; 173 169 if (dev->hw_dev) { 174 170 dma->dev = dev->hw_dev; ··· 227 231 if (!dma) 228 232 return; 229 233 230 - if (dma->desc) { 231 - for (i = 0; i < dma->n_desc; i++) { 232 - desc = &dma->desc[i]; 233 - if (desc->virt_addr) 234 - dma_free_coherent(dma->dev, desc->maxsize, 235 - desc->virt_addr, 236 - desc->hw_addr); 237 - } 238 - kfree(dma->desc); 234 + for (i = 0; i < dma->n_desc; i++) { 235 + desc = &dma->desc[i]; 236 + if (desc->virt_addr) 237 + dma_free_coherent(dma->dev, desc->maxsize, 238 + desc->virt_addr, 239 + desc->hw_addr); 239 240 } 240 241 if (dma->chan2 && dma->chan2 != dma->chan) 241 242 free_dma(dma->chan2);
+1 -1
include/linux/comedi/comedi_isadma.h
··· 48 48 */ 49 49 struct comedi_isadma { 50 50 struct device *dev; 51 - struct comedi_isadma_desc *desc; 52 51 int n_desc; 53 52 int cur_dma; 54 53 unsigned int chan; 55 54 unsigned int chan2; 55 + struct comedi_isadma_desc desc[] __counted_by(n_desc); 56 56 }; 57 57 58 58 #if IS_ENABLED(CONFIG_ISA_DMA_API)