Re: [PATCH] dmaengine: Constify struct dma_descriptor_metadata_ops
Sai Sree Kartheek Adivi <[email protected]> Tue, 14 Jul 2026 19:59:36 +0530
| Newsgroups | gmane.linux.kernel,gmane.linux.kernel.janitors,gmane.linux.ports.arm.kernel |
|---|---|
| Message-ID | <CA+LZ_WZXo2Dv_xTXT+raGCg=HMfcJ1O=8W6wJ2MAy9-iEYM4Vw@mail.gmail.com> |
On Tue, 14 Jul 2026 at 19:45, Christophe JAILLET <[email protected]> wrote: > > 'struct dma_descriptor_metadata_ops' in not modified in these drivers. > > Constifying these structures moves some data to a read-only section, so > increases overall security, especially when the structure holds some > function pointers. > > On a x86_64, with allmodconfig, as an example: > Before: > ====== > text data bss dec hex filename > 120635 21584 64 142283 22bcb drivers/dma/xilinx/xilinx_dma.o > > After: > ===== > text data bss dec hex filename > 120699 21520 64 142283 22bcb drivers/dma/xilinx/xilinx_dma.o > > Signed-off-by: Christophe JAILLET <[email protected]> Reviewed-by: Sai Sree Kartheek Adivi <[email protected]> > --- > Compile tested only. > --- > drivers/dma/ti/k3-udma.c | 2 +- > drivers/dma/xilinx/xilinx_dma.c | 2 +- > include/linux/dmaengine.h | 2 +- > 3 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/dma/ti/k3-udma.c b/drivers/dma/ti/k3-udma.c > index 1cf158eb7bdb..fb21e0df5ab7 100644 > --- a/drivers/dma/ti/k3-udma.c > +++ b/drivers/dma/ti/k3-udma.c > @@ -3408,7 +3408,7 @@ static int udma_set_metadata_len(struct dma_async_tx_descriptor *desc, > return 0; > } > > -static struct dma_descriptor_metadata_ops metadata_ops = { > +static const struct dma_descriptor_metadata_ops metadata_ops = { > .attach = udma_attach_metadata, > .get_ptr = udma_get_metadata_ptr, > .set_len = udma_set_metadata_len, > diff --git a/drivers/dma/xilinx/xilinx_dma.c b/drivers/dma/xilinx/xilinx_dma.c > index 98b41b8f8915..bef2b031dba1 100644 > --- a/drivers/dma/xilinx/xilinx_dma.c > +++ b/drivers/dma/xilinx/xilinx_dma.c > @@ -655,7 +655,7 @@ static void *xilinx_dma_get_metadata_ptr(struct dma_async_tx_descriptor *tx, > return seg->hw.app; > } > > -static struct dma_descriptor_metadata_ops xilinx_dma_metadata_ops = { > +static const struct dma_descriptor_metadata_ops xilinx_dma_metadata_ops = { > .get_ptr = xilinx_dma_get_metadata_ptr, > }; > > diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h > index 6fe46c0c9452..fe33a20abc61 100644 > --- a/include/linux/dmaengine.h > +++ b/include/linux/dmaengine.h > @@ -631,7 +631,7 @@ struct dma_async_tx_descriptor { > void *callback_param; > struct dmaengine_unmap_data *unmap; > enum dma_desc_metadata_mode desc_metadata_mode; > - struct dma_descriptor_metadata_ops *metadata_ops; > + const struct dma_descriptor_metadata_ops *metadata_ops; > #ifdef CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH > struct dma_async_tx_descriptor *next; > struct dma_async_tx_descriptor *parent; > -- > 2.55.0 > >