# git rev-parse -q --verify 397758385ba96da48a96f82cf3521f994f3a78b3^{commit} 397758385ba96da48a96f82cf3521f994f3a78b3 already have revision, skipping fetch # git checkout -q -f -B kisskb 397758385ba96da48a96f82cf3521f994f3a78b3 # git clean -qxdf # < git log -1 # commit 397758385ba96da48a96f82cf3521f994f3a78b3 # Author: Michael Ellerman # Date: Tue Jul 10 16:20:56 2018 +1000 # # powerpc/uaccess: Enable get_user(u64, *p) on 32-bit # # Currently if you build a 32-bit powerpc kernel and use get_user() to # load a u64 value it will fail to build with eg: # # kernel/rseq.o: In function `rseq_get_rseq_cs': # kernel/rseq.c:123: undefined reference to `__get_user_bad' # # This is hitting the check in __get_user_size() that makes sure the # size we're copying doesn't exceed the size of the destination: # # #define __get_user_size(x, ptr, size, retval) # do { # retval = 0; # __chk_user_ptr(ptr); # if (size > sizeof(x)) # (x) = __get_user_bad(); # # Which doesn't immediately make sense because the size of the # destination is u64, but it's not really, because __get_user_check() # etc. internally create an unsigned long and copy into that: # # #define __get_user_check(x, ptr, size) # ({ # long __gu_err = -EFAULT; # unsigned long __gu_val = 0; # # The problem being that on 32-bit unsigned long is not big enough to # hold a u64. We can fix this with a trick from hpa in the x86 code, we # statically check the type of x and set the type of __gu_val to either # unsigned long or unsigned long long. # # Signed-off-by: Michael Ellerman # < /opt/cross/kisskb/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux-gcc --version # < git log --format=%s --max-count=1 397758385ba96da48a96f82cf3521f994f3a78b3 # < make -s -j 48 ARCH=powerpc O=/kisskb/build/powerpc-next_ppc64e_defconfig_powerpc CROSS_COMPILE=/opt/cross/kisskb/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux- ppc64e_defconfig # make -s -j 48 ARCH=powerpc O=/kisskb/build/powerpc-next_ppc64e_defconfig_powerpc CROSS_COMPILE=/opt/cross/kisskb/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux- /kisskb/src/net/Makefile:24: CC cannot link executables. Skipping bpfilter. /kisskb/src/kernel/cgroup/cgroup-v1.c: In function 'cgroup1_mount': /kisskb/src/kernel/cgroup/cgroup-v1.c:1256:20: warning: 'root' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/kernel/printk/printk.c: In function 'devkmsg_sysctl_set_loglvl': /kisskb/src/kernel/printk/printk.c:183:16: warning: 'old' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/net/Makefile:24: CC cannot link executables. Skipping bpfilter. /kisskb/src/drivers/base/regmap/regmap.c: In function 'regmap_raw_read': /kisskb/src/drivers/base/regmap/regmap.c:2497:6: warning: 'ret' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/base/regmap/regmap.c: In function '_regmap_raw_write': /kisskb/src/drivers/base/regmap/regmap.c:1819:6: warning: 'ret' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/net/bridge/br_netlink.c: In function 'br_afspec': /kisskb/src/net/bridge/br_netlink.c:637:7: warning: 'err' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/tty/serial/8250/8250_core.c: In function 'univ8250_release_irq': /kisskb/src/drivers/tty/serial/8250/8250_core.c:251:18: warning: 'i' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/tty/serial/8250/8250_core.c:231:19: note: 'i' was declared here /kisskb/src/drivers/net/tun.c: In function 'tun_get_user': /kisskb/src/drivers/net/tun.c:1835:30: warning: 'copylen' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/net/tun.c:1745:46: warning: 'linear' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/fs/proc/inode.c: In function 'proc_reg_open': /kisskb/src/include/linux/list.h:65:12: warning: 'pdeo' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/fs/proc/inode.c:339:21: note: 'pdeo' was declared here /kisskb/src/fs/nfsd/nfs4xdr.c: In function 'nfsd4_encode_components_esc': /kisskb/src/fs/nfsd/nfs4xdr.c:2046:9: warning: 'str' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/fs/udf/unicode.c: In function 'udf_name_conv_char': /kisskb/src/fs/udf/unicode.c:132:8: warning: 'c' may be used uninitialized in this function [-Wuninitialized] WARNING: vmlinux.o (.PPC.EMB.apuinfo): unexpected non-allocatable section. Did you forget to use "ax"/"aw" in a .S file? Note that for example contains section definitions for use in .S files. INFO: Uncompressed kernel (size 0xd94ff0) overlaps the address of the wrapper(0x400000) INFO: Fixing the link_address of wrapper to (0xe00000) Image Name: Linux-4.18.0-rc3-g3977583 Created: Tue Jul 10 17:00:36 2018 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 5810594 Bytes = 5674.41 kB = 5.54 MB Load Address: 00000000 Entry Point: 00000000 Completed OK # rm -rf /kisskb/build/powerpc-next_ppc64e_defconfig_powerpc # Build took: 0:01:29.066120