All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH] ubsan: Implement __ubsan_handle_alignment_assumption
Date: Wed, 13 Jan 2021 08:18:01 +0800	[thread overview]
Message-ID: <202101130859.jUnmcYqv-lkp@intel.com> (raw)
In-Reply-To: <20210112205542.1375847-1-natechancellor@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 6889 bytes --]

Hi Nathan,

I love your patch! Perhaps something to improve:

[auto build test WARNING on 7c53f6b671f4aba70ff15e1b05148b10d58c2837]

url:    https://github.com/0day-ci/linux/commits/Nathan-Chancellor/ubsan-Implement-__ubsan_handle_alignment_assumption/20210113-055714
base:    7c53f6b671f4aba70ff15e1b05148b10d58c2837
config: m68k-allmodconfig (attached as .config)
compiler: m68k-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/775adad26a60878926c0ee6cd460a1375bbe51e6
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Nathan-Chancellor/ubsan-Implement-__ubsan_handle_alignment_assumption/20210113-055714
        git checkout 775adad26a60878926c0ee6cd460a1375bbe51e6
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=m68k 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   lib/ubsan.c:192:6: warning: no previous prototype for '__ubsan_handle_add_overflow' [-Wmissing-prototypes]
     192 | void __ubsan_handle_add_overflow(void *data,
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/ubsan.c:200:6: warning: no previous prototype for '__ubsan_handle_sub_overflow' [-Wmissing-prototypes]
     200 | void __ubsan_handle_sub_overflow(void *data,
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/ubsan.c:207:6: warning: no previous prototype for '__ubsan_handle_mul_overflow' [-Wmissing-prototypes]
     207 | void __ubsan_handle_mul_overflow(void *data,
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/ubsan.c:214:6: warning: no previous prototype for '__ubsan_handle_negate_overflow' [-Wmissing-prototypes]
     214 | void __ubsan_handle_negate_overflow(void *_data, void *old_val)
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/ubsan.c:234:6: warning: no previous prototype for '__ubsan_handle_divrem_overflow' [-Wmissing-prototypes]
     234 | void __ubsan_handle_divrem_overflow(void *_data, void *lhs, void *rhs)
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/ubsan.c:315:6: warning: no previous prototype for '__ubsan_handle_type_mismatch' [-Wmissing-prototypes]
     315 | void __ubsan_handle_type_mismatch(struct type_mismatch_data *data,
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/ubsan.c:329:6: warning: no previous prototype for '__ubsan_handle_type_mismatch_v1' [-Wmissing-prototypes]
     329 | void __ubsan_handle_type_mismatch_v1(void *_data, void *ptr)
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/ubsan.c:343:6: warning: no previous prototype for '__ubsan_handle_out_of_bounds' [-Wmissing-prototypes]
     343 | void __ubsan_handle_out_of_bounds(void *_data, void *index)
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/ubsan.c:360:6: warning: no previous prototype for '__ubsan_handle_shift_out_of_bounds' [-Wmissing-prototypes]
     360 | void __ubsan_handle_shift_out_of_bounds(void *_data, void *lhs, void *rhs)
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/ubsan.c:402:6: warning: no previous prototype for '__ubsan_handle_builtin_unreachable' [-Wmissing-prototypes]
     402 | void __ubsan_handle_builtin_unreachable(void *_data)
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/ubsan.c:412:6: warning: no previous prototype for '__ubsan_handle_load_invalid_value' [-Wmissing-prototypes]
     412 | void __ubsan_handle_load_invalid_value(void *_data, void *val)
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> lib/ubsan.c:431:6: warning: no previous prototype for '__ubsan_handle_alignment_assumption' [-Wmissing-prototypes]
     431 | void __ubsan_handle_alignment_assumption(void *_data, unsigned long ptr,
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


vim +/__ubsan_handle_alignment_assumption +431 lib/ubsan.c

   359	
 > 360	void __ubsan_handle_shift_out_of_bounds(void *_data, void *lhs, void *rhs)
   361	{
   362		struct shift_out_of_bounds_data *data = _data;
   363		struct type_descriptor *rhs_type = data->rhs_type;
   364		struct type_descriptor *lhs_type = data->lhs_type;
   365		char rhs_str[VALUE_LENGTH];
   366		char lhs_str[VALUE_LENGTH];
   367		unsigned long ua_flags = user_access_save();
   368	
   369		if (suppress_report(&data->location))
   370			goto out;
   371	
   372		ubsan_prologue(&data->location, "shift-out-of-bounds");
   373	
   374		val_to_string(rhs_str, sizeof(rhs_str), rhs_type, rhs);
   375		val_to_string(lhs_str, sizeof(lhs_str), lhs_type, lhs);
   376	
   377		if (val_is_negative(rhs_type, rhs))
   378			pr_err("shift exponent %s is negative\n", rhs_str);
   379	
   380		else if (get_unsigned_val(rhs_type, rhs) >=
   381			type_bit_width(lhs_type))
   382			pr_err("shift exponent %s is too large for %u-bit type %s\n",
   383				rhs_str,
   384				type_bit_width(lhs_type),
   385				lhs_type->type_name);
   386		else if (val_is_negative(lhs_type, lhs))
   387			pr_err("left shift of negative value %s\n",
   388				lhs_str);
   389		else
   390			pr_err("left shift of %s by %s places cannot be"
   391				" represented in type %s\n",
   392				lhs_str, rhs_str,
   393				lhs_type->type_name);
   394	
   395		ubsan_epilogue();
   396	out:
   397		user_access_restore(ua_flags);
   398	}
   399	EXPORT_SYMBOL(__ubsan_handle_shift_out_of_bounds);
   400	
   401	
   402	void __ubsan_handle_builtin_unreachable(void *_data)
   403	{
   404		struct unreachable_data *data = _data;
   405		ubsan_prologue(&data->location, "unreachable");
   406		pr_err("calling __builtin_unreachable()\n");
   407		ubsan_epilogue();
   408		panic("can't return from __builtin_unreachable()");
   409	}
   410	EXPORT_SYMBOL(__ubsan_handle_builtin_unreachable);
   411	
   412	void __ubsan_handle_load_invalid_value(void *_data, void *val)
   413	{
   414		struct invalid_value_data *data = _data;
   415		char val_str[VALUE_LENGTH];
   416	
   417		if (suppress_report(&data->location))
   418			return;
   419	
   420		ubsan_prologue(&data->location, "invalid-load");
   421	
   422		val_to_string(val_str, sizeof(val_str), data->type, val);
   423	
   424		pr_err("load of value %s is not a valid value for type %s\n",
   425			val_str, data->type->type_name);
   426	
   427		ubsan_epilogue();
   428	}
   429	EXPORT_SYMBOL(__ubsan_handle_load_invalid_value);
   430	
 > 431	void __ubsan_handle_alignment_assumption(void *_data, unsigned long ptr,

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 59573 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Nathan Chancellor <natechancellor@gmail.com>,
	Kees Cook <keescook@chromium.org>,
	Andrew Morton <akpm@linux-foundation.org>
Cc: kbuild-all@lists.01.org,
	Linux Memory Management List <linux-mm@kvack.org>,
	Nick Desaulniers <ndesaulniers@google.com>,
	linux-kernel@vger.kernel.org, clang-built-linux@googlegroups.com,
	Nathan Chancellor <natechancellor@gmail.com>
Subject: Re: [PATCH] ubsan: Implement __ubsan_handle_alignment_assumption
Date: Wed, 13 Jan 2021 08:18:01 +0800	[thread overview]
Message-ID: <202101130859.jUnmcYqv-lkp@intel.com> (raw)
In-Reply-To: <20210112205542.1375847-1-natechancellor@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 6745 bytes --]

Hi Nathan,

I love your patch! Perhaps something to improve:

[auto build test WARNING on 7c53f6b671f4aba70ff15e1b05148b10d58c2837]

url:    https://github.com/0day-ci/linux/commits/Nathan-Chancellor/ubsan-Implement-__ubsan_handle_alignment_assumption/20210113-055714
base:    7c53f6b671f4aba70ff15e1b05148b10d58c2837
config: m68k-allmodconfig (attached as .config)
compiler: m68k-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/775adad26a60878926c0ee6cd460a1375bbe51e6
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Nathan-Chancellor/ubsan-Implement-__ubsan_handle_alignment_assumption/20210113-055714
        git checkout 775adad26a60878926c0ee6cd460a1375bbe51e6
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=m68k 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   lib/ubsan.c:192:6: warning: no previous prototype for '__ubsan_handle_add_overflow' [-Wmissing-prototypes]
     192 | void __ubsan_handle_add_overflow(void *data,
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/ubsan.c:200:6: warning: no previous prototype for '__ubsan_handle_sub_overflow' [-Wmissing-prototypes]
     200 | void __ubsan_handle_sub_overflow(void *data,
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/ubsan.c:207:6: warning: no previous prototype for '__ubsan_handle_mul_overflow' [-Wmissing-prototypes]
     207 | void __ubsan_handle_mul_overflow(void *data,
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/ubsan.c:214:6: warning: no previous prototype for '__ubsan_handle_negate_overflow' [-Wmissing-prototypes]
     214 | void __ubsan_handle_negate_overflow(void *_data, void *old_val)
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/ubsan.c:234:6: warning: no previous prototype for '__ubsan_handle_divrem_overflow' [-Wmissing-prototypes]
     234 | void __ubsan_handle_divrem_overflow(void *_data, void *lhs, void *rhs)
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/ubsan.c:315:6: warning: no previous prototype for '__ubsan_handle_type_mismatch' [-Wmissing-prototypes]
     315 | void __ubsan_handle_type_mismatch(struct type_mismatch_data *data,
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/ubsan.c:329:6: warning: no previous prototype for '__ubsan_handle_type_mismatch_v1' [-Wmissing-prototypes]
     329 | void __ubsan_handle_type_mismatch_v1(void *_data, void *ptr)
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/ubsan.c:343:6: warning: no previous prototype for '__ubsan_handle_out_of_bounds' [-Wmissing-prototypes]
     343 | void __ubsan_handle_out_of_bounds(void *_data, void *index)
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/ubsan.c:360:6: warning: no previous prototype for '__ubsan_handle_shift_out_of_bounds' [-Wmissing-prototypes]
     360 | void __ubsan_handle_shift_out_of_bounds(void *_data, void *lhs, void *rhs)
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/ubsan.c:402:6: warning: no previous prototype for '__ubsan_handle_builtin_unreachable' [-Wmissing-prototypes]
     402 | void __ubsan_handle_builtin_unreachable(void *_data)
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   lib/ubsan.c:412:6: warning: no previous prototype for '__ubsan_handle_load_invalid_value' [-Wmissing-prototypes]
     412 | void __ubsan_handle_load_invalid_value(void *_data, void *val)
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> lib/ubsan.c:431:6: warning: no previous prototype for '__ubsan_handle_alignment_assumption' [-Wmissing-prototypes]
     431 | void __ubsan_handle_alignment_assumption(void *_data, unsigned long ptr,
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


vim +/__ubsan_handle_alignment_assumption +431 lib/ubsan.c

   359	
 > 360	void __ubsan_handle_shift_out_of_bounds(void *_data, void *lhs, void *rhs)
   361	{
   362		struct shift_out_of_bounds_data *data = _data;
   363		struct type_descriptor *rhs_type = data->rhs_type;
   364		struct type_descriptor *lhs_type = data->lhs_type;
   365		char rhs_str[VALUE_LENGTH];
   366		char lhs_str[VALUE_LENGTH];
   367		unsigned long ua_flags = user_access_save();
   368	
   369		if (suppress_report(&data->location))
   370			goto out;
   371	
   372		ubsan_prologue(&data->location, "shift-out-of-bounds");
   373	
   374		val_to_string(rhs_str, sizeof(rhs_str), rhs_type, rhs);
   375		val_to_string(lhs_str, sizeof(lhs_str), lhs_type, lhs);
   376	
   377		if (val_is_negative(rhs_type, rhs))
   378			pr_err("shift exponent %s is negative\n", rhs_str);
   379	
   380		else if (get_unsigned_val(rhs_type, rhs) >=
   381			type_bit_width(lhs_type))
   382			pr_err("shift exponent %s is too large for %u-bit type %s\n",
   383				rhs_str,
   384				type_bit_width(lhs_type),
   385				lhs_type->type_name);
   386		else if (val_is_negative(lhs_type, lhs))
   387			pr_err("left shift of negative value %s\n",
   388				lhs_str);
   389		else
   390			pr_err("left shift of %s by %s places cannot be"
   391				" represented in type %s\n",
   392				lhs_str, rhs_str,
   393				lhs_type->type_name);
   394	
   395		ubsan_epilogue();
   396	out:
   397		user_access_restore(ua_flags);
   398	}
   399	EXPORT_SYMBOL(__ubsan_handle_shift_out_of_bounds);
   400	
   401	
   402	void __ubsan_handle_builtin_unreachable(void *_data)
   403	{
   404		struct unreachable_data *data = _data;
   405		ubsan_prologue(&data->location, "unreachable");
   406		pr_err("calling __builtin_unreachable()\n");
   407		ubsan_epilogue();
   408		panic("can't return from __builtin_unreachable()");
   409	}
   410	EXPORT_SYMBOL(__ubsan_handle_builtin_unreachable);
   411	
   412	void __ubsan_handle_load_invalid_value(void *_data, void *val)
   413	{
   414		struct invalid_value_data *data = _data;
   415		char val_str[VALUE_LENGTH];
   416	
   417		if (suppress_report(&data->location))
   418			return;
   419	
   420		ubsan_prologue(&data->location, "invalid-load");
   421	
   422		val_to_string(val_str, sizeof(val_str), data->type, val);
   423	
   424		pr_err("load of value %s is not a valid value for type %s\n",
   425			val_str, data->type->type_name);
   426	
   427		ubsan_epilogue();
   428	}
   429	EXPORT_SYMBOL(__ubsan_handle_load_invalid_value);
   430	
 > 431	void __ubsan_handle_alignment_assumption(void *_data, unsigned long ptr,

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 59573 bytes --]

  parent reply	other threads:[~2021-01-13  0:18 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-12 20:55 [PATCH] ubsan: Implement __ubsan_handle_alignment_assumption Nathan Chancellor
2021-01-12 21:15 ` Nick Desaulniers
2021-01-12 21:37   ` Nathan Chancellor
2021-01-12 21:53     ` Nick Desaulniers
2021-01-12 22:06       ` Nathan Chancellor
2021-01-12 23:56         ` Kees Cook
2021-01-13  0:12 ` [PATCH v2] " Nathan Chancellor
2021-01-27 22:44   ` [PATCH v3] " Nathan Chancellor
2021-01-27 22:54     ` Nick Desaulniers
2021-01-13  0:18 ` kernel test robot [this message]
2021-01-13  0:18   ` [PATCH] " kernel test robot
2021-01-13  0:39 ` kernel test robot
2021-01-13  0:39   ` kernel test robot
2021-01-13  1:31   ` Nathan Chancellor
2021-01-13  1:39     ` Nick Desaulniers
2021-01-13  1:39       ` Nick Desaulniers
2021-01-27 22:26       ` Nick Desaulniers
2021-01-27 22:26         ` Nick Desaulniers

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202101130859.jUnmcYqv-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.