]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge branch 'mellanox'
authorDavid S. Miller <davem@davemloft.net>
Mon, 27 Oct 2014 02:46:08 +0000 (22:46 -0400)
committerDavid S. Miller <davem@davemloft.net>
Mon, 27 Oct 2014 02:46:08 +0000 (22:46 -0400)
Eli Cohen says:

====================
irq sync fixes

This two patch series fixes a race where an interrupt handler could access a
freed memory.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlx4/eq.c
drivers/net/ethernet/mellanox/mlx5/core/eq.c

index a49c9d11d8a58e5a8bcc5419133a7909204a0a41..49290a4059039a72c86e119c59d2d03ec6c3eb4c 100644 (file)
@@ -1026,6 +1026,7 @@ static void mlx4_free_eq(struct mlx4_dev *dev,
                                pr_cont("\n");
                }
        }
+       synchronize_irq(eq->irq);
 
        mlx4_mtt_cleanup(dev, &eq->mtt);
        for (i = 0; i < npages; ++i)
index ed53291468f3226e644aa039025a962aff0b0fe0..a278238a2db643ba04b924dd9920a284abcd8908 100644 (file)
@@ -420,6 +420,7 @@ int mlx5_destroy_unmap_eq(struct mlx5_core_dev *dev, struct mlx5_eq *eq)
        if (err)
                mlx5_core_warn(dev, "failed to destroy a previously created eq: eqn %d\n",
                               eq->eqn);
+       synchronize_irq(table->msix_arr[eq->irqn].vector);
        mlx5_buf_free(dev, &eq->buf);
 
        return err;