Hi guys,
I write the following rules to remove "request_irq" from funciton "alx_request_msix_irq":
@@
expression ret;
@@
static int alx_request_msix_irq(struct alx_adapter *adpt)
{
+ int rid = 0;
...
- ret = request_irq(...);
...
}

but it doesn't work for the source code:

static int alx_request_msix_irq(struct alx_adapter *adpt)
{
   irqreturn_t (*handler)(int, void *);
   int msix_idx;
   int num_msix_intrs = adpt->num_msix_intrs;
   int retval = 0;

   for (msix_idx = 0; msix_idx < num_msix_intrs; msix_idx++) {

       handler = alx_msix_rtx;

       retval = request_irq(adpt->msix_entries[msix_idx].vector,
            handler, 0, msix->name, msix);

       if (retval)
           return retval;
   }

   return 0;
}


it only works when I move the "request_irq" call out of the for loop:

static int alx_request_msix_irq(struct alx_adapter *adpt)
{
   irqreturn_t (*handler)(int, void *);
   int msix_idx;
   int num_msix_intrs = adpt->num_msix_intrs;
   int retval = 0;

   handler = alx_msix_rtx;
   retval = request_irq(adpt->msix_entries[msix_idx].vector,
       handler, 0, msix->name, msix);

   for (msix_idx = 0; msix_idx < num_msix_intrs; msix_idx++) {
       if (retval)
           return retval;
   }

   return 0;
}

_______________________________________________
Cocci mailing list
[email protected]
http://lists.diku.dk/mailman/listinfo/cocci
(Web access from inside DIKUs LAN only)

Reply via email to