]> git.kernelconcepts.de Git - karo-tx-linux.git/commit
x86: uaccess: introduce try and catch framework
authorHiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>
Fri, 23 Jan 2009 23:49:41 +0000 (15:49 -0800)
committerH. Peter Anvin <hpa@linux.intel.com>
Sat, 24 Jan 2009 01:17:36 +0000 (17:17 -0800)
commitfe40c0af3cff3ea461cf25bddb979abc7279d4df
treebe37f58bce212299476186147e44dbd486be34a1
parentcc86c9e0dc1a41451240b948bb39d46bb2536ae8
x86: uaccess: introduce try and catch framework

Impact: introduce new uaccess exception handling framework

Introduce {get|put}_user_try and {get|put}_user_catch as new uaccess exception
handling framework.
{get|put}_user_try begins exception block and {get|put}_user_catch(err) ends
the block and gets err if an exception occured in {get|put}_user_ex() in the
block. The exception is stored thread_info->uaccess_err.

The example usage of this framework is below;
int func()
{
int err = 0;

get_user_try {
get_user_ex(...);
get_user_ex(...);
:
} get_user_catch(err);

return err;
}

Note: get_user_ex() is not clear the value when an exception occurs, it's
different from the behavior of __get_user(), but I think it doesn't matter.

Signed-off-by: Hiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
arch/x86/include/asm/thread_info.h
arch/x86/include/asm/uaccess.h
arch/x86/mm/extable.c