mirror of
https://github.com/torvalds/linux.git
synced 2024-09-20 15:03:04 +00:00
usb: xhci: use array_size() when allocating and freeing memory
Replace size_mul() with array_size() in memory allocation and freeing processes, it fits better semantically. Macro array_size() is identical to size_mult(), which clamps the max size, so it's imperative that array_size() is used when freeing said memory. Suggested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Niklas Neronin <niklas.neronin@linux.intel.com> Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com> Link: https://lore.kernel.org/r/20240429140245.3955523-8-mathias.nyman@linux.intel.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
7e2bd7dd80
commit
0c95950894
|
@ -536,7 +536,7 @@ static void xhci_free_stream_ctx(struct xhci_hcd *xhci,
|
|||
struct xhci_stream_ctx *stream_ctx, dma_addr_t dma)
|
||||
{
|
||||
struct device *dev = xhci_to_hcd(xhci)->self.sysdev;
|
||||
size_t size = sizeof(struct xhci_stream_ctx) * num_stream_ctxs;
|
||||
size_t size = array_size(sizeof(struct xhci_stream_ctx), num_stream_ctxs);
|
||||
|
||||
if (size > MEDIUM_STREAM_ARRAY_SIZE)
|
||||
dma_free_coherent(dev, size, stream_ctx, dma);
|
||||
|
@ -561,7 +561,7 @@ static struct xhci_stream_ctx *xhci_alloc_stream_ctx(struct xhci_hcd *xhci,
|
|||
gfp_t mem_flags)
|
||||
{
|
||||
struct device *dev = xhci_to_hcd(xhci)->self.sysdev;
|
||||
size_t size = size_mul(sizeof(struct xhci_stream_ctx), num_stream_ctxs);
|
||||
size_t size = array_size(sizeof(struct xhci_stream_ctx), num_stream_ctxs);
|
||||
|
||||
if (size > MEDIUM_STREAM_ARRAY_SIZE)
|
||||
return dma_alloc_coherent(dev, size, dma, mem_flags);
|
||||
|
@ -1638,7 +1638,7 @@ static int scratchpad_alloc(struct xhci_hcd *xhci, gfp_t flags)
|
|||
goto fail_sp;
|
||||
|
||||
xhci->scratchpad->sp_array = dma_alloc_coherent(dev,
|
||||
size_mul(sizeof(u64), num_sp),
|
||||
array_size(sizeof(u64), num_sp),
|
||||
&xhci->scratchpad->sp_dma, flags);
|
||||
if (!xhci->scratchpad->sp_array)
|
||||
goto fail_sp2;
|
||||
|
@ -1671,7 +1671,7 @@ static int scratchpad_alloc(struct xhci_hcd *xhci, gfp_t flags)
|
|||
kfree(xhci->scratchpad->sp_buffers);
|
||||
|
||||
fail_sp3:
|
||||
dma_free_coherent(dev, num_sp * sizeof(u64),
|
||||
dma_free_coherent(dev, array_size(sizeof(u64), num_sp),
|
||||
xhci->scratchpad->sp_array,
|
||||
xhci->scratchpad->sp_dma);
|
||||
|
||||
|
@ -1700,7 +1700,7 @@ static void scratchpad_free(struct xhci_hcd *xhci)
|
|||
xhci->scratchpad->sp_array[i]);
|
||||
}
|
||||
kfree(xhci->scratchpad->sp_buffers);
|
||||
dma_free_coherent(dev, num_sp * sizeof(u64),
|
||||
dma_free_coherent(dev, array_size(sizeof(u64), num_sp),
|
||||
xhci->scratchpad->sp_array,
|
||||
xhci->scratchpad->sp_dma);
|
||||
kfree(xhci->scratchpad);
|
||||
|
@ -1778,7 +1778,7 @@ static int xhci_alloc_erst(struct xhci_hcd *xhci,
|
|||
struct xhci_segment *seg;
|
||||
struct xhci_erst_entry *entry;
|
||||
|
||||
size = size_mul(sizeof(struct xhci_erst_entry), evt_ring->num_segs);
|
||||
size = array_size(sizeof(struct xhci_erst_entry), evt_ring->num_segs);
|
||||
erst->entries = dma_alloc_coherent(xhci_to_hcd(xhci)->self.sysdev,
|
||||
size, &erst->erst_dma_addr, flags);
|
||||
if (!erst->entries)
|
||||
|
@ -1829,7 +1829,7 @@ xhci_free_interrupter(struct xhci_hcd *xhci, struct xhci_interrupter *ir)
|
|||
if (!ir)
|
||||
return;
|
||||
|
||||
erst_size = sizeof(struct xhci_erst_entry) * ir->erst.num_entries;
|
||||
erst_size = array_size(sizeof(struct xhci_erst_entry), ir->erst.num_entries);
|
||||
if (ir->erst.entries)
|
||||
dma_free_coherent(dev, erst_size,
|
||||
ir->erst.entries,
|
||||
|
|
Loading…
Reference in New Issue
Block a user