# 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/korg/gcc-8.1.0-nolibc/hppa-linux/bin/hppa-linux-gcc --version # < git log --format=%s --max-count=1 397758385ba96da48a96f82cf3521f994f3a78b3 # < make -s -j 10 ARCH=parisc O=/kisskb/build/powerpc-next_parisc-defconfig_parisc CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/hppa-linux/bin/hppa-linux- defconfig # make -s -j 10 ARCH=parisc O=/kisskb/build/powerpc-next_parisc-defconfig_parisc CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/hppa-linux/bin/hppa-linux- /kisskb/src/net/Makefile:24: CC cannot link executables. Skipping bpfilter. :1335:2: warning: #warning syscall rseq not implemented [-Wcpp] /kisskb/src/crypto/blkcipher.c: In function 'crypto_blkcipher_report': /kisskb/src/crypto/blkcipher.c:513:2: warning: 'strncpy' specified bound 64 equals destination size [-Wstringop-truncation] strncpy(rblkcipher.geniv, alg->cra_blkcipher.geniv ?: "", ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sizeof(rblkcipher.geniv)); ~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/crypto/ablkcipher.c: In function 'crypto_ablkcipher_report': /kisskb/src/crypto/ablkcipher.c:374:2: warning: 'strncpy' specified bound 64 equals destination size [-Wstringop-truncation] strncpy(rblkcipher.geniv, alg->cra_ablkcipher.geniv ?: "", ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sizeof(rblkcipher.geniv)); ~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/crypto/ablkcipher.c: In function 'crypto_givcipher_report': /kisskb/src/crypto/ablkcipher.c:448:2: warning: 'strncpy' specified bound 64 equals destination size [-Wstringop-truncation] strncpy(rblkcipher.geniv, alg->cra_ablkcipher.geniv ?: "", ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sizeof(rblkcipher.geniv)); ~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/net/Makefile:24: CC cannot link executables. Skipping bpfilter. In function 'kernfs_get_target_path', inlined from 'kernfs_getlink.isra.0' at /kisskb/src/fs/kernfs/symlink.c:109:10, inlined from 'kernfs_iop_get_link.part.1' at /kisskb/src/fs/kernfs/symlink.c:127:10, inlined from 'kernfs_iop_get_link': /kisskb/src/fs/kernfs/symlink.c:91:3: warning: 'strncpy' output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation] strncpy(s + len, kn->name, slen); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/fs/kernfs/symlink.c: In function 'kernfs_iop_get_link': /kisskb/src/fs/kernfs/symlink.c:88:14: note: length computed here int slen = strlen(kn->name); ^~~~~~~~~~~~~~~~ /kisskb/src/fs/ext4/super.c: In function '__save_error_info.isra.5': /kisskb/src/fs/ext4/super.c:326:2: warning: 'strncpy' specified bound 32 equals destination size [-Wstringop-truncation] strncpy(es->s_last_error_func, func, sizeof(es->s_last_error_func)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/fs/ext4/super.c:330:3: warning: 'strncpy' specified bound 32 equals destination size [-Wstringop-truncation] strncpy(es->s_first_error_func, func, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sizeof(es->s_first_error_func)); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In function 'fill_kobj_path', inlined from 'kobject_get_path' at /kisskb/src/lib/kobject.c:155:2: /kisskb/src/lib/kobject.c:128:3: warning: 'strncpy' output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation] strncpy(path + length, kobject_name(parent), cur); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/lib/kobject.c: In function 'kobject_get_path': /kisskb/src/lib/kobject.c:125:13: note: length computed here int cur = strlen(kobject_name(parent)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ Completed OK # rm -rf /kisskb/build/powerpc-next_parisc-defconfig_parisc # Build took: 0:01:19.225582