From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============0635096764669172571==" MIME-Version: 1.0 From: kernel test robot To: kbuild-all@lists.01.org Subject: Re: [PATCH v2 2/2] vsprintf: Move space out of string literals in fourcc_string() Date: Tue, 25 Jan 2022 03:23:46 +0800 Message-ID: <202201250147.uYccwqwy-lkp@intel.com> In-Reply-To: <20220124144258.34120-2-andriy.shevchenko@linux.intel.com> List-Id: --===============0635096764669172571== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Andy, I love your patch! Yet something to improve: [auto build test ERROR on linux/master] [also build test ERROR on linus/master v5.17-rc1 next-20220124] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Andy-Shevchenko/vsprintf-F= ix-potential-unaligned-access/20220124-224420 base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git = 2c271fe77d52a0555161926c232cd5bc07178b39 config: arc-randconfig-r026-20220124 (https://download.01.org/0day-ci/archi= ve/20220125/202201250147.uYccwqwy-lkp(a)intel.com/config) compiler: arceb-elf-gcc (GCC) 11.2.0 reproduce (this is a W=3D1 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/f1895edcabdc5dae0528ffff9= c3cb665a937223d git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Andy-Shevchenko/vsprintf-Fix-poten= tial-unaligned-access/20220124-224420 git checkout f1895edcabdc5dae0528ffff9c3cb665a937223d # save the config file to linux build tree mkdir build_dir COMPILER_INSTALL_PATH=3D$HOME/0day COMPILER=3Dgcc-11.2.0 make.cross= O=3Dbuild_dir ARCH=3Darc SHELL=3D/bin/bash If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All error/warnings (new ones prefixed by >>): lib/vsprintf.c: In function 'va_format': lib/vsprintf.c:1695:9: warning: function 'va_format' might be a candidat= e for 'gnu_printf' format attribute [-Wsuggest-attribute=3Dformat] 1695 | buf +=3D vsnprintf(buf, end > buf ? end - buf : 0, va_fm= t->fmt, va); | ^~~ lib/vsprintf.c: In function 'fourcc_string': >> lib/vsprintf.c:1794:13: error: implicit declaration of function 'stpcpy'= ; did you mean 'strcpy'? [-Werror=3Dimplicit-function-declaration] 1794 | p =3D stpcpy(p, orig & BIT(31) ? "big-endian" : "little-= endian"); | ^~~~~~ | strcpy >> lib/vsprintf.c:1794:11: warning: assignment to 'char *' from 'int' makes= pointer from integer without a cast [-Wint-conversion] 1794 | p =3D stpcpy(p, orig & BIT(31) ? "big-endian" : "little-= endian"); | ^ cc1: some warnings being treated as errors vim +1794 lib/vsprintf.c 1685 = 1686 static char *va_format(char *buf, char *end, struct va_format *va_fm= t, 1687 struct printf_spec spec, const char *fmt) 1688 { 1689 va_list va; 1690 = 1691 if (check_pointer(&buf, end, va_fmt, spec)) 1692 return buf; 1693 = 1694 va_copy(va, *va_fmt->va); > 1695 buf +=3D vsnprintf(buf, end > buf ? end - buf : 0, va_fmt->fmt, va); 1696 va_end(va); 1697 = 1698 return buf; 1699 } 1700 = 1701 static noinline_for_stack 1702 char *uuid_string(char *buf, char *end, const u8 *addr, 1703 struct printf_spec spec, const char *fmt) 1704 { 1705 char uuid[UUID_STRING_LEN + 1]; 1706 char *p =3D uuid; 1707 int i; 1708 const u8 *index =3D uuid_index; 1709 bool uc =3D false; 1710 = 1711 if (check_pointer(&buf, end, addr, spec)) 1712 return buf; 1713 = 1714 switch (*(++fmt)) { 1715 case 'L': 1716 uc =3D true; 1717 fallthrough; 1718 case 'l': 1719 index =3D guid_index; 1720 break; 1721 case 'B': 1722 uc =3D true; 1723 break; 1724 } 1725 = 1726 for (i =3D 0; i < 16; i++) { 1727 if (uc) 1728 p =3D hex_byte_pack_upper(p, addr[index[i]]); 1729 else 1730 p =3D hex_byte_pack(p, addr[index[i]]); 1731 switch (i) { 1732 case 3: 1733 case 5: 1734 case 7: 1735 case 9: 1736 *p++ =3D '-'; 1737 break; 1738 } 1739 } 1740 = 1741 *p =3D 0; 1742 = 1743 return string_nocheck(buf, end, uuid, spec); 1744 } 1745 = 1746 static noinline_for_stack 1747 char *netdev_bits(char *buf, char *end, const void *addr, 1748 struct printf_spec spec, const char *fmt) 1749 { 1750 unsigned long long num; 1751 int size; 1752 = 1753 if (check_pointer(&buf, end, addr, spec)) 1754 return buf; 1755 = 1756 switch (fmt[1]) { 1757 case 'F': 1758 num =3D *(const netdev_features_t *)addr; 1759 size =3D sizeof(netdev_features_t); 1760 break; 1761 default: 1762 return error_string(buf, end, "(%pN?)", spec); 1763 } 1764 = 1765 return special_hex_number(buf, end, num, size); 1766 } 1767 = 1768 static noinline_for_stack 1769 char *fourcc_string(char *buf, char *end, const u32 *fourcc, 1770 struct printf_spec spec, const char *fmt) 1771 { 1772 char output[sizeof("0123 little-endian (0x01234567)")]; 1773 char *p =3D output; 1774 unsigned int i; 1775 u32 orig, val; 1776 = 1777 if (fmt[1] !=3D 'c' || fmt[2] !=3D 'c') 1778 return error_string(buf, end, "(%p4?)", spec); 1779 = 1780 if (check_pointer(&buf, end, fourcc, spec)) 1781 return buf; 1782 = 1783 orig =3D get_unaligned(fourcc); 1784 val =3D orig & ~BIT(31); 1785 = 1786 for (i =3D 0; i < sizeof(u32); i++) { 1787 unsigned char c =3D val >> (i * 8); 1788 = 1789 /* Print non-control ASCII characters as-is, dot otherwise */ 1790 *p++ =3D isascii(c) && isprint(c) ? c : '.'; 1791 } 1792 = 1793 *p++ =3D ' '; > 1794 p =3D stpcpy(p, orig & BIT(31) ? "big-endian" : "little-endian"); 1795 = 1796 *p++ =3D ' '; 1797 *p++ =3D '('; 1798 p =3D special_hex_number(p, output + sizeof(output) - 2, orig, size= of(u32)); 1799 *p++ =3D ')'; 1800 *p =3D '\0'; 1801 = 1802 return string(buf, end, output, spec); 1803 } 1804 = --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============0635096764669172571==--