lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <CAOi1vP9T8q5asgfdECVNxhSUAwCFN9SapPp3h-0ySc1Wg4s6wA@mail.gmail.com>
Date:	Sun, 13 Sep 2015 14:07:10 +0300
From:	Ilya Dryomov <idryomov@...il.com>
To:	kbuild test robot <fengguang.wu@...el.com>
Cc:	kbuild-all@...org, David Howells <dhowells@...hat.com>,
	Koichi Yasutake <yasutake.koichi@...panasonic.com>,
	linux-am33-list@...hat.com,
	Geert Uytterhoeven <geert@...ux-m68k.org>,
	Ceph Development <ceph-devel@...r.kernel.org>,
	"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: size_t and related types on mn10300

On Thu, Sep 10, 2015 at 10:57 AM, kbuild test robot
<fengguang.wu@...el.com> wrote:
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
> head:   22dc312d56ba077db27a9798b340e7d161f1df05
> commit: 5f1c79a71766ba656762636936edf708089bdb14 [12335/12685] libceph: check data_len in ->alloc_msg()
> config: mn10300-allmodconfig (attached as .config)
> reproduce:
>   wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
>   chmod +x ~/bin/make.cross
>   git checkout 5f1c79a71766ba656762636936edf708089bdb14
>   # save the attached .config to linux build tree
>   make.cross ARCH=mn10300
>
> All warnings (new ones prefixed by >>):
>
>    net/ceph/osd_client.c: In function 'get_reply':
>>> net/ceph/osd_client.c:2865:3: warning: format '%zu' expects argument of type 'size_t', but argument 6 has type 'unsigned int' [-Wformat=]
>       pr_warn("%s osd%d tid %llu data %d > preallocated %zu, skipping\n",
>       ^
>
> vim +2865 net/ceph/osd_client.c
>
>   2849                       req->r_reply, req->r_reply->con);
>   2850          ceph_msg_revoke_incoming(req->r_reply);
>   2851
>   2852          if (front_len > req->r_reply->front_alloc_len) {
>   2853                  pr_warn("%s osd%d tid %llu front %d > preallocated %d\n",
>   2854                          __func__, osd->o_osd, req->r_tid, front_len,
>   2855                          req->r_reply->front_alloc_len);
>   2856                  m = ceph_msg_new(CEPH_MSG_OSD_OPREPLY, front_len, GFP_NOFS,
>   2857                                   false);
>   2858                  if (!m)
>   2859                          goto out;
>   2860                  ceph_msg_put(req->r_reply);
>   2861                  req->r_reply = m;
>   2862          }
>   2863
>   2864          if (data_len > req->r_reply->data_length) {
>> 2865                  pr_warn("%s osd%d tid %llu data %d > preallocated %zu, skipping\n",
>   2866                          __func__, osd->o_osd, req->r_tid, data_len,
>   2867                          req->r_reply->data_length);
>   2868                  m = NULL;
>   2869                  *skip = 1;
>   2870                  goto out;
>   2871          }
>   2872
>   2873          m = ceph_msg_get(req->r_reply);

req->r_reply->data_length is size_t, formatted with %zu, as it should
be.  I think this is a problem with either mn10300 itself or the build
toolchain - compiling mn10300 defconfig throws a whole bunch of similar
errors all over the place.

arch/mn10300/include/uapi/asm/posix_types.h
 30 #if __GNUC__ == 4
 31 typedef unsigned int    __kernel_size_t;
 32 typedef signed int      __kernel_ssize_t;
 33 #else
 34 typedef unsigned long   __kernel_size_t;
 35 typedef signed long     __kernel_ssize_t;
 36 #endif

This came from commit 3ad001c04f1a ("MN10300: Fix size_t and ssize_t")
by David.  Now, if that's right, it should probably be >= 4.  But then

$ echo | /opt/gcc-4.9.0-nolibc/am33_2.0-linux/bin/am33_2.0-linux-gcc
-dM -E - | grep __SIZE_TYPE__
#define __SIZE_TYPE__ long unsigned int

and sure enough

gcc/config/mn10300/linux.h
 87 #undef SIZE_TYPE
 88 #undef PTRDIFF_TYPE
 89 #undef WCHAR_TYPE
 90 #undef WCHAR_TYPE_SIZE

gcc/config/mn10300/mn10300.h
125 #undef  SIZE_TYPE
126 #define SIZE_TYPE "unsigned int"

so it looks like "linux" variant uses gcc defaults, at least since
gcc.git commit 05381348ac78 (which is dated a few months after David's
commit made it into the kernel).  Can someone who cares about mn10300
or at least knows what it is look at this?

Thanks,

                Ilya
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ