From: Shani Michaelli Date: Wed, 14 May 2014 09:15:15 +0000 (+0300) Subject: net/mlx4_en: Protect MAC address modification with the state_lock mutex X-Git-Tag: omap-for-v3.16/fixes-against-rc1~36^2~227^2~2 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fe1ff29dd4989f6371e8d78bc340f596f4a78e04;p=pandora-kernel.git net/mlx4_en: Protect MAC address modification with the state_lock mutex This Patches solves an issue that could raise when modifying the device's MAC. It occurs due to a simultaneous access to priv->mac_hash from two contexts. The buggy scenario described below: Context 1: copy the new mac address to the dev->dev_addr field. Context 2: mlx4_en_do_uc_filter removes prev_mac entry from the mac_hash db since it is not in dev->uc and not equal to dev->dev_addr. Context 1: mlx4_en_do_set_mac() calls mlx4_en_replace_mac() to replace prev_mac with dev_addr but it fails to update the mac_hash db since it no longer contains prev_mac, therefore it returns with an error. The fix is to prevent mlx4_en_do_uc_filter from being executed by both of the context 1 calls described above, This is done by putting them both under the mdev->state_lock lock, it will solve this issue since mlx4_en_do_uc_filter is already protected by the mdev->state_lock. Reviewed-by: Eyal Perry Signed-off-by: Shani Michaeli Signed-off-by: Amir Vadai Signed-off-by: David S. Miller --- Reading git-diff-tree failed