• Hiroshi Shimamoto's avatar
    x86: uaccess: introduce try and catch framework · fe40c0af
    Hiroshi Shimamoto authored
    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: default avatarHiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>
    Signed-off-by: default avatarH. Peter Anvin <hpa@linux.intel.com>
    fe40c0af
thread_info.h 7.88 KB