Merge 4.9.212 branch 'android-4.9-q' into tw10-android-4.9-q
Documentation/filesystems/fscrypt.rst arch/arm/common/Kconfig arch/arm64/boot/dts/altera/socfpga_stratix10.dtsi arch/arm64/boot/dts/amd/amd-seattle-soc.dtsi arch/arm64/boot/dts/arm/juno-clocks.dtsi arch/arm64/boot/dts/broadcom/ns2.dtsi arch/arm64/boot/dts/lg/lg1312.dtsi arch/arm64/boot/dts/lg/lg1313.dtsi arch/arm64/boot/dts/marvell/armada-37xx.dtsi arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi arch/arm64/boot/dts/nvidia/tegra210.dtsi arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi arch/arm64/boot/dts/qcom/msm8996.dtsi arch/arm64/configs/ranchu64_defconfig arch/arm64/include/asm/cpucaps.h arch/arm64/kernel/cpufeature.c arch/arm64/kernel/traps.c arch/arm64/mm/mmu.c crypto/Makefile crypto/ablkcipher.c crypto/blkcipher.c crypto/testmgr.h crypto/zstd.c drivers/android/binder.c drivers/android/binder_alloc.c drivers/char/random.c drivers/clocksource/exynos_mct.c drivers/dma/pl330.c drivers/hid/hid-sony.c drivers/hid/uhid.c drivers/hid/usbhid/hiddev.c drivers/i2c/i2c-core.c drivers/md/dm-crypt.c drivers/media/v4l2-core/videobuf2-v4l2.c drivers/mmc/host/dw_mmc.c drivers/net/ethernet/broadcom/tg3.c drivers/net/usb/r8152.c drivers/scsi/scsi_logging.c drivers/scsi/sd.c drivers/scsi/ufs/ufshcd-pci.c drivers/scsi/ufs/ufshcd-pltfrm.c drivers/staging/android/Kconfig drivers/staging/android/ion/ion.c drivers/staging/android/ion/ion_priv.h drivers/staging/android/ion/ion_system_heap.c drivers/staging/android/lowmemorykiller.c drivers/tty/serial/samsung.c drivers/usb/dwc3/core.c drivers/usb/dwc3/gadget.c drivers/usb/host/xhci-hub.c drivers/video/fbdev/core/fbmon.c drivers/video/fbdev/core/modedb.c fs/crypto/fname.c fs/crypto/fscrypt_private.h fs/crypto/keyinfo.c fs/ext4/ialloc.c fs/ext4/namei.c fs/ext4/xattr.c fs/f2fs/checkpoint.c fs/f2fs/data.c fs/f2fs/debug.c fs/f2fs/dir.c fs/f2fs/f2fs.h fs/f2fs/file.c fs/f2fs/gc.c fs/f2fs/inline.c fs/f2fs/inode.c fs/f2fs/namei.c fs/f2fs/node.c fs/f2fs/recovery.c fs/f2fs/segment.c fs/f2fs/segment.h fs/f2fs/super.c fs/f2fs/sysfs.c fs/fat/dir.c fs/fat/fatent.c fs/file.c fs/namespace.c fs/pnode.c fs/proc/inode.c fs/proc/root.c fs/proc/task_mmu.c fs/sdcardfs/dentry.c fs/sdcardfs/derived_perm.c fs/sdcardfs/file.c fs/sdcardfs/inode.c fs/sdcardfs/lookup.c fs/sdcardfs/main.c fs/sdcardfs/sdcardfs.h fs/sdcardfs/super.c include/linux/blk_types.h include/linux/cpuhotplug.h include/linux/cred.h include/linux/fb.h include/linux/power_supply.h include/linux/sched.h include/linux/zstd.h include/trace/events/sched.h include/uapi/linux/android/binder.h init/Kconfig init/main.c kernel/bpf/hashtab.c kernel/cpu.c kernel/cred.c kernel/fork.c kernel/locking/spinlock_debug.c kernel/panic.c kernel/printk/printk.c kernel/sched/Makefile kernel/sched/core.c kernel/sched/fair.c kernel/sched/rt.c kernel/sched/walt.c kernel/sched/walt.h kernel/trace/trace.c lib/bug.c lib/list_debug.c lib/vsprintf.c lib/zstd/bitstream.h lib/zstd/compress.c lib/zstd/decompress.c lib/zstd/fse.h lib/zstd/fse_compress.c lib/zstd/fse_decompress.c lib/zstd/huf_compress.c lib/zstd/huf_decompress.c lib/zstd/zstd_internal.h mm/debug.c mm/filemap.c mm/rmap.c net/core/filter.c net/ipv4/sysctl_net_ipv4.c net/ipv4/sysfs_net_ipv4.c net/ipv4/tcp_input.c net/ipv4/tcp_output.c net/ipv4/udp.c net/ipv6/netfilter/nf_conntrack_reasm.c net/netfilter/Kconfig net/netfilter/Makefile net/netfilter/xt_qtaguid.c net/netfilter/xt_qtaguid_internal.h net/xfrm/xfrm_policy.c net/xfrm/xfrm_state.c scripts/checkpatch.pl security/selinux/hooks.c sound/core/compress_offload.c
This commit is contained in:
commit
af1d3ae977
4823 changed files with 128774 additions and 44493 deletions
98
kernel/sys.c
98
kernel/sys.c
|
@ -51,6 +51,7 @@
|
|||
#include <linux/binfmts.h>
|
||||
|
||||
#include <linux/sched.h>
|
||||
#include <linux/sched/loadavg.h>
|
||||
#include <linux/rcupdate.h>
|
||||
#include <linux/uidgid.h>
|
||||
#include <linux/cred.h>
|
||||
|
@ -1341,18 +1342,19 @@ static int override_release(char __user *release, size_t len)
|
|||
|
||||
SYSCALL_DEFINE1(newuname, struct new_utsname __user *, name)
|
||||
{
|
||||
int errno = 0;
|
||||
struct new_utsname tmp;
|
||||
|
||||
down_read(&uts_sem);
|
||||
if (copy_to_user(name, utsname(), sizeof *name))
|
||||
errno = -EFAULT;
|
||||
memcpy(&tmp, utsname(), sizeof(tmp));
|
||||
up_read(&uts_sem);
|
||||
if (copy_to_user(name, &tmp, sizeof(tmp)))
|
||||
return -EFAULT;
|
||||
|
||||
if (!errno && override_release(name->release, sizeof(name->release)))
|
||||
errno = -EFAULT;
|
||||
if (!errno && override_architecture(name))
|
||||
errno = -EFAULT;
|
||||
return errno;
|
||||
if (override_release(name->release, sizeof(name->release)))
|
||||
return -EFAULT;
|
||||
if (override_architecture(name))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef __ARCH_WANT_SYS_OLD_UNAME
|
||||
|
@ -1361,55 +1363,46 @@ SYSCALL_DEFINE1(newuname, struct new_utsname __user *, name)
|
|||
*/
|
||||
SYSCALL_DEFINE1(uname, struct old_utsname __user *, name)
|
||||
{
|
||||
int error = 0;
|
||||
struct old_utsname tmp;
|
||||
|
||||
if (!name)
|
||||
return -EFAULT;
|
||||
|
||||
down_read(&uts_sem);
|
||||
if (copy_to_user(name, utsname(), sizeof(*name)))
|
||||
error = -EFAULT;
|
||||
memcpy(&tmp, utsname(), sizeof(tmp));
|
||||
up_read(&uts_sem);
|
||||
if (copy_to_user(name, &tmp, sizeof(tmp)))
|
||||
return -EFAULT;
|
||||
|
||||
if (!error && override_release(name->release, sizeof(name->release)))
|
||||
error = -EFAULT;
|
||||
if (!error && override_architecture(name))
|
||||
error = -EFAULT;
|
||||
return error;
|
||||
if (override_release(name->release, sizeof(name->release)))
|
||||
return -EFAULT;
|
||||
if (override_architecture(name))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
}
|
||||
|
||||
SYSCALL_DEFINE1(olduname, struct oldold_utsname __user *, name)
|
||||
{
|
||||
int error;
|
||||
struct oldold_utsname tmp = {};
|
||||
|
||||
if (!name)
|
||||
return -EFAULT;
|
||||
if (!access_ok(VERIFY_WRITE, name, sizeof(struct oldold_utsname)))
|
||||
return -EFAULT;
|
||||
|
||||
down_read(&uts_sem);
|
||||
error = __copy_to_user(&name->sysname, &utsname()->sysname,
|
||||
__OLD_UTS_LEN);
|
||||
error |= __put_user(0, name->sysname + __OLD_UTS_LEN);
|
||||
error |= __copy_to_user(&name->nodename, &utsname()->nodename,
|
||||
__OLD_UTS_LEN);
|
||||
error |= __put_user(0, name->nodename + __OLD_UTS_LEN);
|
||||
error |= __copy_to_user(&name->release, &utsname()->release,
|
||||
__OLD_UTS_LEN);
|
||||
error |= __put_user(0, name->release + __OLD_UTS_LEN);
|
||||
error |= __copy_to_user(&name->version, &utsname()->version,
|
||||
__OLD_UTS_LEN);
|
||||
error |= __put_user(0, name->version + __OLD_UTS_LEN);
|
||||
error |= __copy_to_user(&name->machine, &utsname()->machine,
|
||||
__OLD_UTS_LEN);
|
||||
error |= __put_user(0, name->machine + __OLD_UTS_LEN);
|
||||
memcpy(&tmp.sysname, &utsname()->sysname, __OLD_UTS_LEN);
|
||||
memcpy(&tmp.nodename, &utsname()->nodename, __OLD_UTS_LEN);
|
||||
memcpy(&tmp.release, &utsname()->release, __OLD_UTS_LEN);
|
||||
memcpy(&tmp.version, &utsname()->version, __OLD_UTS_LEN);
|
||||
memcpy(&tmp.machine, &utsname()->machine, __OLD_UTS_LEN);
|
||||
up_read(&uts_sem);
|
||||
if (copy_to_user(name, &tmp, sizeof(tmp)))
|
||||
return -EFAULT;
|
||||
|
||||
if (!error && override_architecture(name))
|
||||
error = -EFAULT;
|
||||
if (!error && override_release(name->release, sizeof(name->release)))
|
||||
error = -EFAULT;
|
||||
return error ? -EFAULT : 0;
|
||||
if (override_architecture(name))
|
||||
return -EFAULT;
|
||||
if (override_release(name->release, sizeof(name->release)))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -1423,17 +1416,18 @@ SYSCALL_DEFINE2(sethostname, char __user *, name, int, len)
|
|||
|
||||
if (len < 0 || len > __NEW_UTS_LEN)
|
||||
return -EINVAL;
|
||||
down_write(&uts_sem);
|
||||
errno = -EFAULT;
|
||||
if (!copy_from_user(tmp, name, len)) {
|
||||
struct new_utsname *u = utsname();
|
||||
struct new_utsname *u;
|
||||
|
||||
down_write(&uts_sem);
|
||||
u = utsname();
|
||||
memcpy(u->nodename, tmp, len);
|
||||
memset(u->nodename + len, 0, sizeof(u->nodename) - len);
|
||||
errno = 0;
|
||||
uts_proc_notify(UTS_PROC_HOSTNAME);
|
||||
up_write(&uts_sem);
|
||||
}
|
||||
up_write(&uts_sem);
|
||||
return errno;
|
||||
}
|
||||
|
||||
|
@ -1441,8 +1435,9 @@ SYSCALL_DEFINE2(sethostname, char __user *, name, int, len)
|
|||
|
||||
SYSCALL_DEFINE2(gethostname, char __user *, name, int, len)
|
||||
{
|
||||
int i, errno;
|
||||
int i;
|
||||
struct new_utsname *u;
|
||||
char tmp[__NEW_UTS_LEN + 1];
|
||||
|
||||
if (len < 0)
|
||||
return -EINVAL;
|
||||
|
@ -1451,11 +1446,11 @@ SYSCALL_DEFINE2(gethostname, char __user *, name, int, len)
|
|||
i = 1 + strlen(u->nodename);
|
||||
if (i > len)
|
||||
i = len;
|
||||
errno = 0;
|
||||
if (copy_to_user(name, u->nodename, i))
|
||||
errno = -EFAULT;
|
||||
memcpy(tmp, u->nodename, i);
|
||||
up_read(&uts_sem);
|
||||
return errno;
|
||||
if (copy_to_user(name, tmp, i))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -1474,17 +1469,18 @@ SYSCALL_DEFINE2(setdomainname, char __user *, name, int, len)
|
|||
if (len < 0 || len > __NEW_UTS_LEN)
|
||||
return -EINVAL;
|
||||
|
||||
down_write(&uts_sem);
|
||||
errno = -EFAULT;
|
||||
if (!copy_from_user(tmp, name, len)) {
|
||||
struct new_utsname *u = utsname();
|
||||
struct new_utsname *u;
|
||||
|
||||
down_write(&uts_sem);
|
||||
u = utsname();
|
||||
memcpy(u->domainname, tmp, len);
|
||||
memset(u->domainname + len, 0, sizeof(u->domainname) - len);
|
||||
errno = 0;
|
||||
uts_proc_notify(UTS_PROC_DOMAINNAME);
|
||||
up_write(&uts_sem);
|
||||
}
|
||||
up_write(&uts_sem);
|
||||
return errno;
|
||||
}
|
||||
|
||||
|
@ -1966,7 +1962,7 @@ static int validate_prctl_map(struct prctl_mm_map *prctl_map)
|
|||
((unsigned long)prctl_map->__m1 __op \
|
||||
(unsigned long)prctl_map->__m2) ? 0 : -EINVAL
|
||||
error = __prctl_check_order(start_code, <, end_code);
|
||||
error |= __prctl_check_order(start_data, <, end_data);
|
||||
error |= __prctl_check_order(start_data,<=, end_data);
|
||||
error |= __prctl_check_order(start_brk, <=, brk);
|
||||
error |= __prctl_check_order(arg_start, <=, arg_end);
|
||||
error |= __prctl_check_order(env_start, <=, env_end);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue