@@ -350,7 +350,6 @@ static int msi_verify_entries(struct pci_dev *dev)
350
350
static int msi_capability_init (struct pci_dev * dev , int nvec ,
351
351
struct irq_affinity * affd )
352
352
{
353
- struct irq_affinity_desc * masks = NULL ;
354
353
struct msi_desc * entry , desc ;
355
354
int ret ;
356
355
@@ -361,8 +360,8 @@ static int msi_capability_init(struct pci_dev *dev, int nvec,
361
360
/* Disable MSI during setup in the hardware to erase stale state */
362
361
pci_msi_set_enable (dev , 0 );
363
362
364
- if ( affd )
365
- masks = irq_create_affinity_masks (nvec , affd );
363
+ struct irq_affinity_desc * masks __free ( kfree ) =
364
+ affd ? irq_create_affinity_masks (nvec , affd ) : NULL ;
366
365
367
366
msi_lock_descs (& dev -> dev );
368
367
ret = msi_setup_msi_desc (dev , nvec , masks );
@@ -402,7 +401,6 @@ static int msi_capability_init(struct pci_dev *dev, int nvec,
402
401
pci_free_msi_irqs (dev );
403
402
unlock :
404
403
msi_unlock_descs (& dev -> dev );
405
- kfree (masks );
406
404
return ret ;
407
405
}
408
406
@@ -661,12 +659,10 @@ static void msix_mask_all(void __iomem *base, int tsize)
661
659
static int msix_setup_interrupts (struct pci_dev * dev , struct msix_entry * entries ,
662
660
int nvec , struct irq_affinity * affd )
663
661
{
664
- struct irq_affinity_desc * masks = NULL ;
662
+ struct irq_affinity_desc * masks __free (kfree ) =
663
+ affd ? irq_create_affinity_masks (nvec , affd ) : NULL ;
665
664
int ret ;
666
665
667
- if (affd )
668
- masks = irq_create_affinity_masks (nvec , affd );
669
-
670
666
msi_lock_descs (& dev -> dev );
671
667
ret = msix_setup_msi_descs (dev , entries , nvec , masks );
672
668
if (ret )
@@ -688,7 +684,6 @@ static int msix_setup_interrupts(struct pci_dev *dev, struct msix_entry *entries
688
684
pci_free_msi_irqs (dev );
689
685
out_unlock :
690
686
msi_unlock_descs (& dev -> dev );
691
- kfree (masks );
692
687
return ret ;
693
688
}
694
689
0 commit comments