|
@@ -244,7 +244,8 @@ static void alternatives_smp_lock(u8 **start, u8 **end, u8 *text, u8 *text_end)
|
|
if (*ptr > text_end)
|
|
if (*ptr > text_end)
|
|
continue;
|
|
continue;
|
|
/* turn DS segment override prefix into lock prefix */
|
|
/* turn DS segment override prefix into lock prefix */
|
|
- text_poke(*ptr, ((unsigned char []){0xf0}), 1);
|
|
|
|
|
|
+ if (**ptr == 0x3e)
|
|
|
|
+ text_poke(*ptr, ((unsigned char []){0xf0}), 1);
|
|
};
|
|
};
|
|
mutex_unlock(&text_mutex);
|
|
mutex_unlock(&text_mutex);
|
|
}
|
|
}
|
|
@@ -263,7 +264,8 @@ static void alternatives_smp_unlock(u8 **start, u8 **end, u8 *text, u8 *text_end
|
|
if (*ptr > text_end)
|
|
if (*ptr > text_end)
|
|
continue;
|
|
continue;
|
|
/* turn lock prefix into DS segment override prefix */
|
|
/* turn lock prefix into DS segment override prefix */
|
|
- text_poke(*ptr, ((unsigned char []){0x3E}), 1);
|
|
|
|
|
|
+ if (**ptr == 0xf0)
|
|
|
|
+ text_poke(*ptr, ((unsigned char []){0x3E}), 1);
|
|
};
|
|
};
|
|
mutex_unlock(&text_mutex);
|
|
mutex_unlock(&text_mutex);
|
|
}
|
|
}
|