Message ID | 20240423143205.1420976-1-make_ruc2021@163.com (mailing list archive) |
---|---|
State | Rejected |
Headers | show |
Series | dmaengine: mxs-dma: Add check for dma_set_max_seg_size() | expand |
On Tue, Apr 23, 2024 at 10:32:05PM +0800, Ma Ke wrote: > To avoid the failure of dma_set_max_seg_size(), we should check the > return value of the dma_set_max_seg_size(). Check return value of dma_set_max_seg_size() in case it return error. > > Signed-off-by: Ma Ke <make_ruc2021@163.com> > --- > drivers/dma/mxs-dma.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/dma/mxs-dma.c b/drivers/dma/mxs-dma.c > index cfb9962417ef..90cbb9b04b02 100644 > --- a/drivers/dma/mxs-dma.c > +++ b/drivers/dma/mxs-dma.c > @@ -798,7 +798,9 @@ static int mxs_dma_probe(struct platform_device *pdev) > mxs_dma->dma_device.dev = &pdev->dev; > > /* mxs_dma gets 65535 bytes maximum sg size */ > - dma_set_max_seg_size(mxs_dma->dma_device.dev, MAX_XFER_BYTES); > + ret = dma_set_max_seg_size(mxs_dma->dma_device.dev, MAX_XFER_BYTES); > + if (ret) > + return ret; How error happen? static inline int dma_set_max_seg_size(struct device *dev, unsigned int size) { if (dev->dma_parms) { dev->dma_parms->max_segment_size = size; return 0; } return -EIO; } Only possible dev->dma_parms is null. but mxs-dma is platform device, it point to platform's dma_parms field. Look like impossible it is null. Frank > > mxs_dma->dma_device.device_alloc_chan_resources = mxs_dma_alloc_chan_resources; > mxs_dma->dma_device.device_free_chan_resources = mxs_dma_free_chan_resources; > -- > 2.37.2 >
On 24-04-24, 00:07, Frank Li wrote: > On Tue, Apr 23, 2024 at 10:32:05PM +0800, Ma Ke wrote: > > - dma_set_max_seg_size(mxs_dma->dma_device.dev, MAX_XFER_BYTES); > > + ret = dma_set_max_seg_size(mxs_dma->dma_device.dev, MAX_XFER_BYTES); > > + if (ret) > > + return ret; > > How error happen? > > static inline int dma_set_max_seg_size(struct device *dev, unsigned int size) > { > if (dev->dma_parms) { > dev->dma_parms->max_segment_size = size; > return 0; > } > return -EIO; > } > > Only possible dev->dma_parms is null. but mxs-dma is platform device, it > point to platform's dma_parms field. Look like impossible it is null. Yep, checking for the sake of checking is bad. It needs to be logical
diff --git a/drivers/dma/mxs-dma.c b/drivers/dma/mxs-dma.c index cfb9962417ef..90cbb9b04b02 100644 --- a/drivers/dma/mxs-dma.c +++ b/drivers/dma/mxs-dma.c @@ -798,7 +798,9 @@ static int mxs_dma_probe(struct platform_device *pdev) mxs_dma->dma_device.dev = &pdev->dev; /* mxs_dma gets 65535 bytes maximum sg size */ - dma_set_max_seg_size(mxs_dma->dma_device.dev, MAX_XFER_BYTES); + ret = dma_set_max_seg_size(mxs_dma->dma_device.dev, MAX_XFER_BYTES); + if (ret) + return ret; mxs_dma->dma_device.device_alloc_chan_resources = mxs_dma_alloc_chan_resources; mxs_dma->dma_device.device_free_chan_resources = mxs_dma_free_chan_resources;
To avoid the failure of dma_set_max_seg_size(), we should check the return value of the dma_set_max_seg_size(). Signed-off-by: Ma Ke <make_ruc2021@163.com> --- drivers/dma/mxs-dma.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)