]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - lib/ubsan.c
ubsan, x86: Annotate and allow __ubsan_handle_shift_out_of_bounds() in uaccess regions
[linux.git] / lib / ubsan.c
index e7d31735950de7c0980967164ce21ba0ca8b77c0..0c4681118fcd2a819aa3f5e09ba569c4bd87c20a 100644 (file)
@@ -374,9 +374,10 @@ void __ubsan_handle_shift_out_of_bounds(struct shift_out_of_bounds_data *data,
        struct type_descriptor *lhs_type = data->lhs_type;
        char rhs_str[VALUE_LENGTH];
        char lhs_str[VALUE_LENGTH];
+       unsigned long ua_flags = user_access_save();
 
        if (suppress_report(&data->location))
-               return;
+               goto out;
 
        ubsan_prologue(&data->location, &flags);
 
@@ -402,6 +403,8 @@ void __ubsan_handle_shift_out_of_bounds(struct shift_out_of_bounds_data *data,
                        lhs_type->type_name);
 
        ubsan_epilogue(&flags);
+out:
+       user_access_restore(ua_flags);
 }
 EXPORT_SYMBOL(__ubsan_handle_shift_out_of_bounds);