x86: tls: off by one checks
Subsystems (3)
PATCH 1/1 x86: tls: off by one checks
These are used as offsets into an array of GDT_ENTRY_TLS_ENTRIES members so GDT_ENTRY_TLS_ENTRIES is one past the end of the array.
Signed-off-by Dan Carpenter <[email protected]>
arch/x86/kernel/tls.c +2 -2
@@ -163,7 +163,7 @@ int regset_tls_get(struct task_struct *target, const struct user_regset *regset, {const struct desc_struct *tls; -if (pos >GDT_ENTRY_TLS_ENTRIES *sizeof (struct user_desc ) || +if (pos >=GDT_ENTRY_TLS_ENTRIES *sizeof (struct user_desc ) || (pos %sizeof (struct user_desc )) !=0 || (count %sizeof (struct user_desc )) !=0 )return -EINVAL ;
@@ -198,7 +198,7 @@ int regset_tls_set(struct task_struct *target, const struct user_regset *regset,struct user_desc infobuf[GDT_ENTRY_TLS_ENTRIES ];const struct user_desc *info; -if (pos >GDT_ENTRY_TLS_ENTRIES *sizeof (struct user_desc ) || +if (pos >=GDT_ENTRY_TLS_ENTRIES *sizeof (struct user_desc ) || (pos %sizeof (struct user_desc )) !=0 || (count %sizeof (struct user_desc )) !=0 )return -EINVAL ;
[tip:x86/urgent] x86, tls: Off by one limit check
Commit-ID: 8f0750f19789cf352d7e24a6cc50f2ab1b4f1372 Gitweb: http://git.kernel.org/tip/8f0750f19789cf352d7e24a6cc50f2ab1b4f1372 Author: Dan Carpenter <[email protected]> AuthorDate: Sat, 24 Mar 2012 10:52:50 +0300 Committer: H. Peter Anvin <[email protected]> CommitDate: Wed, 28 Mar 2012 09:39:35 -0700
x86, tls: Off by one limit check
These are used as offsets into an array of GDT_ENTRY_TLS_ENTRIES members so GDT_ENTRY_TLS_ENTRIES is one past the end of the array.
Signed-off-by Dan Carpenter <[email protected]>
Cc <[email protected]>
Signed-off-by H. Peter Anvin <[email protected]>
--- arch/x86/kernel/tls.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
arch/x86/kernel/tls.c +2 -2
@@ -163,7 +163,7 @@ int regset_tls_get(struct task_struct *target, const struct user_regset *regset, {const struct desc_struct *tls; -if (pos >GDT_ENTRY_TLS_ENTRIES *sizeof (struct user_desc ) || +if (pos >=GDT_ENTRY_TLS_ENTRIES *sizeof (struct user_desc ) || (pos %sizeof (struct user_desc )) !=0 || (count %sizeof (struct user_desc )) !=0 )return -EINVAL ;
@@ -198,7 +198,7 @@ int regset_tls_set(struct task_struct *target, const struct user_regset *regset,struct user_desc infobuf[GDT_ENTRY_TLS_ENTRIES ];const struct user_desc *info; -if (pos >GDT_ENTRY_TLS_ENTRIES *sizeof (struct user_desc ) || +if (pos >=GDT_ENTRY_TLS_ENTRIES *sizeof (struct user_desc ) || (pos %sizeof (struct user_desc )) !=0 || (count %sizeof (struct user_desc )) !=0 )return -EINVAL ;