originally, 'data->flags = CSD_FLAG_LOCK', and we use 'data->flags &= ~CSD_FLAG_LOCK' for csd_unlock, they are not symmetrix operations so use '|=' instead of '='. though, now data->flags only hold CSD_FLAG_LOCK, it's not so meaningful to use '|=' to set 1 bit, and '&= ~' to clear 1 bit.
Signed-off-by: liguang <lig.f...@cn.fujitsu.com> --- kernel/smp.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/kernel/smp.c b/kernel/smp.c index 1818dc0..2d5deb4 100644 --- a/kernel/smp.c +++ b/kernel/smp.c @@ -109,7 +109,7 @@ static void csd_lock_wait(struct call_single_data *data) static void csd_lock(struct call_single_data *data) { csd_lock_wait(data); - data->flags = CSD_FLAG_LOCK; + data->flags |= CSD_FLAG_LOCK; /* * prevent CPU from reordering the above assignment -- 1.7.2.5 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/