LEFT | RIGHT |
1 /* | 1 /* |
2 * This file contains error reporting code. | 2 * This file contains error reporting code. |
3 * | 3 * |
4 * Copyright (c) 2014 Samsung Electronics Co., Ltd. | 4 * Copyright (c) 2014 Samsung Electronics Co., Ltd. |
5 * Author: Andrey Ryabinin <ryabinin.a.a@gmail.com> | 5 * Author: Andrey Ryabinin <ryabinin.a.a@gmail.com> |
6 * | 6 * |
7 * Some code borrowed from https://github.com/xairy/kasan-prototype by | 7 * Some code borrowed from https://github.com/xairy/kasan-prototype by |
8 * Andrey Konovalov <adech.fo@gmail.com> | 8 * Andrey Konovalov <adech.fo@gmail.com> |
9 * | 9 * |
10 * This program is free software; you can redistribute it and/or modify | 10 * This program is free software; you can redistribute it and/or modify |
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
411 | 411 |
412 static inline bool kasan_report_enabled(void) | 412 static inline bool kasan_report_enabled(void) |
413 { | 413 { |
414 if (current->kasan_depth) | 414 if (current->kasan_depth) |
415 return false; | 415 return false; |
416 if (test_bit(KASAN_BIT_MULTI_SHOT, &kasan_flags)) | 416 if (test_bit(KASAN_BIT_MULTI_SHOT, &kasan_flags)) |
417 return true; | 417 return true; |
418 return !test_and_set_bit(KASAN_BIT_REPORTED, &kasan_flags); | 418 return !test_and_set_bit(KASAN_BIT_REPORTED, &kasan_flags); |
419 } | 419 } |
420 | 420 |
421 void kasan_report(unsigned long addr, size_t size, | 421 void __kasan_report(unsigned long addr, size_t size, |
422 bool is_write, unsigned long ip) | 422 bool is_write, unsigned long ip) |
423 { | 423 { |
424 struct kasan_access_info info; | 424 struct kasan_access_info info; |
425 | 425 |
426 if (likely(!kasan_report_enabled())) | 426 if (likely(!kasan_report_enabled())) |
427 return; | 427 return; |
428 | 428 |
429 disable_trace_on_warning(); | 429 disable_trace_on_warning(); |
430 | 430 |
431 info.access_addr = (void *)addr; | 431 info.access_addr = (void *)addr; |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
466 { | 466 { |
467 kasan_report(addr, size, false, _RET_IP_); | 467 kasan_report(addr, size, false, _RET_IP_); |
468 } | 468 } |
469 EXPORT_SYMBOL(__asan_report_load_n_noabort); | 469 EXPORT_SYMBOL(__asan_report_load_n_noabort); |
470 | 470 |
471 void __asan_report_store_n_noabort(unsigned long addr, size_t size) | 471 void __asan_report_store_n_noabort(unsigned long addr, size_t size) |
472 { | 472 { |
473 kasan_report(addr, size, true, _RET_IP_); | 473 kasan_report(addr, size, true, _RET_IP_); |
474 } | 474 } |
475 EXPORT_SYMBOL(__asan_report_store_n_noabort); | 475 EXPORT_SYMBOL(__asan_report_store_n_noabort); |
LEFT | RIGHT |