diff options
| author | Zachary Amsden <[email protected]> | 2005-08-16 19:05:09 +0000 |
|---|---|---|
| committer | Linus Torvalds <[email protected]> | 2005-08-16 19:18:01 +0000 |
| commit | 12aaa0855b39b5464db953fedf399fa91ee365ed (patch) | |
| tree | d202ce6d6529fe23e950e24cd04b4d562f28705e | |
| parent | Merge head 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/shaggy/... (diff) | |
| download | kernel-12aaa0855b39b5464db953fedf399fa91ee365ed.tar.gz kernel-12aaa0855b39b5464db953fedf399fa91ee365ed.zip | |
[PATCH] i386 / desc_empty macro is incorrect
Chuck Ebbert noticed that the desc_empty macro is incorrect. Fix it.
Thankfully, this is not used as a security check, but it can falsely
overwrite TLS segments with carefully chosen base / limits. I do not
believe this is an issue in practice, but it is a kernel bug.
Signed-off-by: Zachary Amsden <[email protected]>
Signed-off-by: Chris Wright <[email protected]>
[ x86-64 had the same problem, and the same fix. Linus ]
Signed-off-by: Linus Torvalds <[email protected]>
| -rw-r--r-- | include/asm-i386/processor.h | 2 | ||||
| -rw-r--r-- | include/asm-x86_64/processor.h | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/include/asm-i386/processor.h b/include/asm-i386/processor.h index 5d06e6bd6ba0..d0d8b0160090 100644 --- a/include/asm-i386/processor.h +++ b/include/asm-i386/processor.h @@ -29,7 +29,7 @@ struct desc_struct { }; #define desc_empty(desc) \ - (!((desc)->a + (desc)->b)) + (!((desc)->a | (desc)->b)) #define desc_equal(desc1, desc2) \ (((desc1)->a == (desc2)->a) && ((desc1)->b == (desc2)->b)) diff --git a/include/asm-x86_64/processor.h b/include/asm-x86_64/processor.h index 106f666517bb..85549e656eeb 100644 --- a/include/asm-x86_64/processor.h +++ b/include/asm-x86_64/processor.h @@ -32,7 +32,7 @@ #define ID_MASK 0x00200000 #define desc_empty(desc) \ - (!((desc)->a + (desc)->b)) + (!((desc)->a | (desc)->b)) #define desc_equal(desc1, desc2) \ (((desc1)->a == (desc2)->a) && ((desc1)->b == (desc2)->b)) |
