]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
thunderbolt: dma_port: kmalloc_array + kzalloc to flex
authorRosen Penev <rosenp@gmail.com>
Fri, 13 Mar 2026 21:41:37 +0000 (14:41 -0700)
committerMika Westerberg <mika.westerberg@linux.intel.com>
Wed, 18 Mar 2026 13:31:56 +0000 (14:31 +0100)
Use a single allocation with a flexible array member. Simplifies
allocation and freeing.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
drivers/thunderbolt/dma_port.c

index 334fefe2125526e6225c514a9356a1ee0011ab7d..c7c2942fa7beda237c00a9cef13957bd99a8c321 100644 (file)
@@ -55,7 +55,7 @@ struct tb_dma_port {
        struct tb_switch *sw;
        u8 port;
        u32 base;
-       u8 *buf;
+       u8 buf[];
 };
 
 /*
@@ -209,16 +209,10 @@ struct tb_dma_port *dma_port_alloc(struct tb_switch *sw)
        if (port < 0)
                return NULL;
 
-       dma = kzalloc_obj(*dma);
+       dma = kzalloc_flex(*dma, buf, MAIL_DATA_DWORDS);
        if (!dma)
                return NULL;
 
-       dma->buf = kmalloc_array(MAIL_DATA_DWORDS, sizeof(u32), GFP_KERNEL);
-       if (!dma->buf) {
-               kfree(dma);
-               return NULL;
-       }
-
        dma->sw = sw;
        dma->port = port;
        dma->base = DMA_PORT_CAP;
@@ -232,10 +226,7 @@ struct tb_dma_port *dma_port_alloc(struct tb_switch *sw)
  */
 void dma_port_free(struct tb_dma_port *dma)
 {
-       if (dma) {
-               kfree(dma->buf);
-               kfree(dma);
-       }
+       kfree(dma);
 }
 
 static int dma_port_wait_for_completion(struct tb_dma_port *dma,