* PROM does not support SAL_INTR_REDIRECT, or it failed.
         * Revert to old method.
         */
-       new_irq_info = kmalloc(sizeof(struct sn_irq_info), GFP_ATOMIC);
+       new_irq_info = kmemdup(sn_irq_info, sizeof(struct sn_irq_info),
+                              GFP_ATOMIC);
        if (new_irq_info == NULL)
                return NULL;
 
-       memcpy(new_irq_info, sn_irq_info, sizeof(struct sn_irq_info));
-
        /* Free the old PROM new_irq_info structure */
        sn_intr_free(local_nasid, local_widget, new_irq_info);
        unregister_intr_pda(new_irq_info);