aboutsummaryrefslogtreecommitdiff
path: root/include/uapi/linux
Commit message (Collapse)AuthorAgeFilesLines
* random: Backport from 4.1.39Joe Maples2019-03-041-7/+1
| | | | Signed-off-by: Joe Maples <joe@frap129.org>
* vfs: add support for a lazytime mount optionTheodore Ts'o2019-03-041-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | Add a new mount option which enables a new "lazytime" mode. This mode causes atime, mtime, and ctime updates to only be made to the in-memory version of the inode. The on-disk times will only get updated when (a) if the inode needs to be updated for some non-time related change, (b) if userspace calls fsync(), syncfs() or sync(), or (c) just before an undeleted inode is evicted from memory. This is OK according to POSIX because there are no guarantees after a crash unless userspace explicitly requests via a fsync(2) call. For workloads which feature a large number of random write to a preallocated file, the lazytime mount option significantly reduces writes to the inode table. The repeated 4k writes to a single block will result in undesirable stress on flash devices and SMR disk drives. Even on conventional HDD's, the repeated writes to the inode table block will trigger Adjacent Track Interference (ATI) remediation latencies, which very negatively impact long tail latencies --- which is a very big deal for web serving tiers (for example). Google-Bug-Id: 18297052 Signed-off-by: Theodore Ts'o <tytso@mit.edu> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* Merge remote-tracking branch 'f2fs-stable/linux-3.10.y'Alex Tsanis2019-02-261-0/+46
|\
| * fscrypt: Move key structure and constants to uapiJoe Richey2017-05-161-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit exposes the necessary constants and structures for a userspace program to pass filesystem encryption keys into the keyring. The fscrypt_key structure was already part of the kernel ABI, this change just makes it so programs no longer have to redeclare these structures (like e4crypt in e2fsprogs currently does). Note that we do not expose the other FS_*_KEY_SIZE constants as they are not necessary. Only XTS is supported for contents_encryption_mode, so currently FS_MAX_KEY_SIZE bytes of key material must always be passed to the kernel. This commit also removes __packed from fscrypt_key as it does not contain any implicit padding and does not refer to an on-disk structure. Signed-off-by: Joe Richey <joerichey@google.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu>
| * fscrypt: catch up to v4.11-rc1Jaegeuk Kim2017-03-091-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Keep validate_user_key() due to kasprintf() panic. fscrypt: - skcipher_ -> ablkcipher_ - fs/crypto/bio.c changes f2fs: - fscrypt: use ENOKEY when file cannot be created w/o key - fscrypt: split supp and notsupp declarations into their own headers - fscrypt: make fscrypt_operations.key_prefix a string Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
| * fs crypto: move per-file encryption from f2fs tree to fs/cryptoJaegeuk Kim2016-03-281-0/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds the renamed functions moved from the f2fs crypto files. [Backporting to 3.10] - Removed d_is_negative() in fscrypt_d_revalidate(). 1. definitions for per-file encryption used by ext4 and f2fs. 2. crypto.c for encrypt/decrypt functions a. IO preparation: - fscrypt_get_ctx / fscrypt_release_ctx b. before IOs: - fscrypt_encrypt_page - fscrypt_decrypt_page - fscrypt_zeroout_range c. after IOs: - fscrypt_decrypt_bio_pages - fscrypt_pullback_bio_page - fscrypt_restore_control_page 3. policy.c supporting context management. a. For ioctls: - fscrypt_process_policy - fscrypt_get_policy b. For context permission - fscrypt_has_permitted_context - fscrypt_inherit_context 4. keyinfo.c to handle permissions - fscrypt_get_encryption_info - fscrypt_free_encryption_info 5. fname.c to support filename encryption a. general wrapper functions - fscrypt_fname_disk_to_usr - fscrypt_fname_usr_to_disk - fscrypt_setup_filename - fscrypt_free_filename b. specific filename handling functions - fscrypt_fname_alloc_buffer - fscrypt_fname_free_buffer 6. Makefile and Kconfig Cc: Al Viro <viro@ftp.linux.org.uk> Signed-off-by: Michael Halcrow <mhalcrow@google.com> Signed-off-by: Ildar Muslukhov <ildarm@google.com> Signed-off-by: Uday Savagaonkar <savagaon@google.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu> Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
* | Merge tag 'android-8.1.0_r0.36' into android-msm-angler-3.10-oreo-m5Nathan Chancellor2018-03-051-0/+1
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Android 8.1.0 Release 0.36 (OPM5.171019.017,angler) * tag 'android-8.1.0_r0.36': msm:ipa: Fix to incorrect structure access msm: sensor: flash: add conditional check for ioctl ASoC: msm: qdsp6v2: Set freed pointers to NULL UPSTREAM: packet: fix tp_reserve race in packet_set_ring diag: Add protection while de-initializing clients UPSTREAM: USB: serial: console: fix use-after-free after failed setup UPSTREAM: ALSA: usb-audio: Kill stray URB at exiting UPSTREAM: ALSA: usb-audio: Check out-of-bounds access by corrupted buffer descriptor UPSTREAM: USB: fix out-of-bounds in usb_set_configuration UPSTREAM: HID: usbhid: fix out-of-bounds bug UPSTREAM: USB: core: fix out-of-bounds access bug in usb_get_bos_descriptor() UPSTREAM: packet: hold bind lock when rebinding to fanout hook BACKPORT: packet: in packet_do_bind, test fanout with bind_lock held power: qcom: msm-core: Add mutex lock for ioctl FROMLIST: power: Fix user ptr in EA_LEAKAGE ioctl diag: Add mutex protection while reading dci debug statistics ANDROID: sdcardfs: Add default_normal option ANDROID: sdcardfs: notify lower file of opens Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
| * | UPSTREAM: USB: fix out-of-bounds in usb_set_configurationGreg Kroah-Hartman2018-01-111-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | commit bd7a3fe770ebd8391d1c7d072ff88e9e76d063eb Andrey Konovalov reported a possible out-of-bounds problem for a USB interface association descriptor. He writes: It seems there's no proper size check of a USB_DT_INTERFACE_ASSOCIATION descriptor. It's only checked that the size is >= 2 in usb_parse_configuration(), so find_iad() might do out-of-bounds access to intf_assoc->bInterfaceCount. And he's right, we don't check for crazy descriptors of this type very well, so resolve this problem. Yet another issue found by syzkaller... Bug: 69052055 Change-Id: I2cc3b5a66d16abd0fc567d69457fc90a45eb12d8 Reported-by: Andrey Konovalov <andreyknvl@google.com> Tested-by: Andrey Konovalov <andreyknvl@google.com> Cc: stable <stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* | | Merge 3.10.107 into android-msm-angler-3.10-oreo-m5Nathan Chancellor2018-01-242-1/+2
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Changes in 3.10.107: (270 commits) Revert "Btrfs: don't delay inode ref updates during log, replay" Btrfs: fix memory leak in reading btree blocks ext4: use more strict checks for inodes_per_block on mount ext4: fix in-superblock mount options processing ext4: add sanity checking to count_overhead() ext4: validate s_first_meta_bg at mount time jbd2: don't leak modified metadata buffers on an aborted journal ext4: fix fencepost in s_first_meta_bg validation ext4: trim allocation requests to group size ext4: preserve the needs_recovery flag when the journal is aborted ext4: return EROFS if device is r/o and journal replay is needed ext4: fix inode checksum calculation problem if i_extra_size is small block: fix use-after-free in sys_ioprio_get() block: allow WRITE_SAME commands with the SG_IO ioctl block: fix del_gendisk() vs blkdev_ioctl crash dm crypt: mark key as invalid until properly loaded dm space map metadata: fix 'struct sm_metadata' leak on failed create md/raid5: limit request size according to implementation limits md:raid1: fix a dead loop when read from a WriteMostly disk md linear: fix a race between linear_add() and linear_congested() CIFS: Fix a possible memory corruption during reconnect CIFS: Fix missing nls unload in smb2_reconnect() CIFS: Fix a possible memory corruption in push locks CIFS: remove bad_network_name flag fs/cifs: make share unaccessible at root level mountable cifs: Do not send echoes before Negotiate is complete ocfs2: fix crash caused by stale lvb with fsdlm plugin ocfs2: fix BUG_ON() in ocfs2_ci_checkpointed() can: raw: raw_setsockopt: limit number of can_filter that can be set can: peak: fix bad memory access and free sequence can: c_can_pci: fix null-pointer-deref in c_can_start() - set device pointer can: ti_hecc: add missing prepare and unprepare of the clock can: bcm: fix hrtimer/tasklet termination in bcm op removal can: usb_8dev: Fix memory leak of priv->cmd_msg_buffer ALSA: hda - Fix up GPIO for ASUS ROG Ranger ALSA: seq: Fix race at creating a queue ALSA: seq: Don't handle loop timeout at snd_seq_pool_done() ALSA: timer: Reject user params with too small ticks ALSA: seq: Fix link corruption by event error handling ALSA: seq: Fix racy cell insertions during snd_seq_pool_done() ALSA: seq: Fix race during FIFO resize ALSA: seq: Don't break snd_use_lock_sync() loop by timeout ALSA: usb-audio: Add QuickCam Communicate Deluxe/S7500 to volume_control_quirks usb: gadgetfs: restrict upper bound on device configuration size USB: gadgetfs: fix unbounded memory allocation bug USB: gadgetfs: fix use-after-free bug USB: gadgetfs: fix checks of wTotalLength in config descriptors xhci: free xhci virtual devices with leaf nodes first USB: serial: io_ti: bind to interface after fw download usb: gadget: composite: always set ep->mult to a sensible value USB: cdc-acm: fix double usb_autopm_put_interface() in acm_port_activate() USB: cdc-acm: fix open and suspend race USB: cdc-acm: fix failed open not being detected usb: dwc3: gadget: make Set Endpoint Configuration macros safe usb: host: xhci-plat: Fix timeout on removal of hot pluggable xhci controllers usb: dwc3: gadget: delay unmap of bounced requests usb: hub: Wait for connection to be reestablished after port reset usb: gadget: composite: correctly initialize ep->maxpacket USB: UHCI: report non-PME wakeup signalling for Intel hardware arm/xen: Use alloc_percpu rather than __alloc_percpu xfs: set AGI buffer type in xlog_recover_clear_agi_bucket xfs: clear _XBF_PAGES from buffers when readahead page ssb: Fix error routine when fallback SPROM fails drivers/gpu/drm/ast: Fix infinite loop if read fails scsi: avoid a permanent stop of the scsi device's request queue scsi: move the nr_phys_segments assert into scsi_init_io scsi: don't BUG_ON() empty DMA transfers scsi: storvsc: properly handle SRB_ERROR when sense message is present scsi: storvsc: properly set residual data length on errors target/pscsi: Fix TYPE_TAPE + TYPE_MEDIMUM_CHANGER export scsi: lpfc: Add shutdown method for kexec scsi: sr: Sanity check returned mode data scsi: sd: Fix capacity calculation with 32-bit sector_t s390/vmlogrdr: fix IUCV buffer allocation libceph: verify authorize reply on connect nfs_write_end(): fix handling of short copies powerpc/ps3: Fix system hang with GCC 5 builds sg_write()/bsg_write() is not fit to be called under KERNEL_DS ftrace/x86: Set ftrace_stub to weak to prevent gcc from using short jumps to it cred/userns: define current_user_ns() as a function net: ti: cpmac: Fix compiler warning due to type confusion tick/broadcast: Prevent NULL pointer dereference netvsc: reduce maximum GSO size drop_monitor: add missing call to genlmsg_end drop_monitor: consider inserted data in genlmsg_end igmp: Make igmp group member RFC 3376 compliant HID: hid-cypress: validate length of report Input: xpad - use correct product id for x360w controllers Input: i8042 - add noloop quirk for Dell Embedded Box PC 3000 Input: iforce - validate number of endpoints before using them Input: kbtab - validate number of endpoints before using them Input: joydev - do not report stale values on first open Input: tca8418 - use the interrupt trigger from the device tree Input: mpr121 - handle multiple bits change of status register Input: mpr121 - set missing event capability Input: i8042 - add Clevo P650RS to the i8042 reset list i2c: fix kernel memory disclosure in dev interface vme: Fix wrong pointer utilization in ca91cx42_slave_get sysrq: attach sysrq handler correctly for 32-bit kernel pinctrl: sh-pfc: Do not unconditionally support PIN_CONFIG_BIAS_DISABLE x86/PCI: Ignore _CRS on Supermicro X8DTH-i/6/iF/6F qla2xxx: Fix crash due to null pointer access ARM: 8634/1: hw_breakpoint: blacklist Scorpion CPUs ARM: dts: da850-evm: fix read access to SPI flash NFSv4: Ensure nfs_atomic_open set the dentry verifier on ENOENT vmxnet3: Wake queue from reset work Fix memory leaks in cifs_do_mount() Compare prepaths when comparing superblocks Move check for prefix path to within cifs_get_root() Fix regression which breaks DFS mounting apparmor: fix uninitialized lsm_audit member apparmor: exec should not be returning ENOENT when it denies apparmor: fix disconnected bind mnts reconnection apparmor: internal paths should be treated as disconnected apparmor: check that xindex is in trans_table bounds apparmor: add missing id bounds check on dfa verification apparmor: don't check for vmalloc_addr if kvzalloc() failed apparmor: fix oops in profile_unpack() when policy_db is not present apparmor: fix module parameters can be changed after policy is locked apparmor: do not expose kernel stack vfio/pci: Fix integer overflows, bitmask check bna: Add synchronization for tx ring. sg: Fix double-free when drives detach during SG_IO move the call of __d_drop(anon) into __d_materialise_unique(dentry, anon) serial: 8250_pci: Detach low-level driver during PCI error recovery bnx2x: Correct ringparam estimate when DOWN tile/ptrace: Preserve previous registers for short regset write sysctl: fix proc_doulongvec_ms_jiffies_minmax() ISDN: eicon: silence misleading array-bounds warning ARC: [arcompact] handle unaligned access delay slot corner case parisc: Don't use BITS_PER_LONG in userspace-exported swab.h header nfs: Don't increment lock sequence ID after NFS4ERR_MOVED ipv6: addrconf: Avoid addrconf_disable_change() using RCU read-side lock af_unix: move unix_mknod() out of bindlock drm/nouveau/nv1a,nv1f/disp: fix memory clock rate retrieval crypto: api - Clear CRYPTO_ALG_DEAD bit before registering an alg ata: sata_mv:- Handle return value of devm_ioremap. mm/memory_hotplug.c: check start_pfn in test_pages_in_a_zone() mm, fs: check for fatal signals in do_generic_file_read() ARC: [arcompact] brown paper bag bug in unaligned access delay slot fixup sched/debug: Don't dump sched debug info in SysRq-W tcp: fix 0 divide in __tcp_select_window() macvtap: read vnet_hdr_size once packet: round up linear to header len vfs: fix uninitialized flags in splice_to_pipe() siano: make it work again with CONFIG_VMAP_STACK futex: Move futex_init() to core_initcall rtc: interface: ignore expired timers when enqueuing new timers irda: Fix lockdep annotations in hashbin_delete(). tty: serial: msm: Fix module autoload rtlwifi: rtl_usb: Fix for URB leaking when doing ifconfig up/down af_packet: remove a stray tab in packet_set_ring() MIPS: Fix special case in 64 bit IP checksumming. mm: vmpressure: fix sending wrong events on underflow ipc/shm: Fix shmat mmap nil-page protection sd: get disk reference in sd_check_events() samples/seccomp: fix 64-bit comparison macros ath5k: drop bogus warning on drv_set_key with unsupported cipher rdma_cm: fail iwarp accepts w/o connection params NFSv4: fix getacl ERANGE for some ACL buffer sizes bcma: use (get|put)_device when probing/removing device driver powerpc/xmon: Fix data-breakpoint KVM: VMX: use correct vmcs_read/write for guest segment selector/base KVM: PPC: Book3S PR: Fix illegal opcode emulation KVM: s390: fix task size check s390: TASK_SIZE for kernel threads xtensa: move parse_tag_fdt out of #ifdef CONFIG_BLK_DEV_INITRD mac80211: flush delayed work when entering suspend drm/ast: Fix test for VGA enabled drm/ttm: Make sure BOs being swapped out are cacheable fat: fix using uninitialized fields of fat_inode/fsinfo_inode drivers: hv: Turn off write permission on the hypercall page xhci: fix 10 second timeout on removal of PCI hotpluggable xhci controllers crypto: improve gcc optimization flags for serpent and wp512 mtd: pmcmsp: use kstrndup instead of kmalloc+strncpy cpmac: remove hopeless #warning mvsas: fix misleading indentation l2tp: avoid use-after-free caused by l2tp_ip_backlog_recv net: don't call strlen() on the user buffer in packet_bind_spkt() dccp: Unlock sock before calling sk_free() tcp: fix various issues for sockets morphing to listen state uapi: fix linux/packet_diag.h userspace compilation error ipv6: avoid write to a possibly cloned skb dccp: fix memory leak during tear-down of unsuccessful connection request futex: Fix potential use-after-free in FUTEX_REQUEUE_PI futex: Add missing error handling to FUTEX_REQUEUE_PI give up on gcc ilog2() constant optimizations cancel the setfilesize transation when io error happen crypto: ghash-clmulni - Fix load failure crypto: cryptd - Assign statesize properly ACPI / video: skip evaluating _DOD when it does not exist Drivers: hv: balloon: don't crash when memory is added in non-sorted order s390/pci: fix use after free in dma_init cpufreq: Fix and clean up show_cpuinfo_cur_freq() igb: Workaround for igb i210 firmware issue igb: add i211 to i210 PHY workaround ipv4: provide stronger user input validation in nl_fib_input() tcp: initialize icsk_ack.lrcvtime at session start time ACM gadget: fix endianness in notifications mmc: sdhci: Do not disable interrupts while waiting for clock uvcvideo: uvc_scan_fallback() for webcams with broken chain fbcon: Fix vc attr at deinit crypto: algif_hash - avoid zero-sized array virtio_balloon: init 1st buffer in stats vq c6x/ptrace: Remove useless PTRACE_SETREGSET implementation sparc/ptrace: Preserve previous registers for short regset write metag/ptrace: Preserve previous registers for short regset write metag/ptrace: Provide default TXSTATUS for short NT_PRSTATUS metag/ptrace: Reject partial NT_METAG_RPIPE writes libceph: force GFP_NOIO for socket allocations ACPI: Fix incompatibility with mcount-based function graph tracing ACPI / power: Avoid maybe-uninitialized warning rtc: s35390a: make sure all members in the output are set rtc: s35390a: implement reset routine as suggested by the reference rtc: s35390a: improve irq handling padata: avoid race in reordering HID: hid-lg: Fix immediate disconnection of Logitech Rumblepad 2 HID: i2c-hid: Add sleep between POWER ON and RESET drm/vmwgfx: NULL pointer dereference in vmw_surface_define_ioctl() drm/vmwgfx: avoid calling vzalloc with a 0 size in vmw_get_cap_3d_ioctl() drm/vmwgfx: Remove getparam error message drm/vmwgfx: fix integer overflow in vmw_surface_define_ioctl() Reset TreeId to zero on SMB2 TREE_CONNECT metag/usercopy: Drop unused macros metag/usercopy: Zero rest of buffer from copy_from_user powerpc: Don't try to fix up misaligned load-with-reservation instructions mm/mempolicy.c: fix error handling in set_mempolicy and mbind. mtd: bcm47xxpart: fix parsing first block after aligned TRX net/packet: fix overflow in check for priv area size x86/vdso: Plug race between mapping and ELF header setup iscsi-target: Fix TMR reference leak during session shutdown iscsi-target: Drop work-around for legacy GlobalSAN initiator xen, fbfront: fix connecting to backend char: lack of bool string made CONFIG_DEVPORT always on platform/x86: acer-wmi: setup accelerometer when machine has appropriate notify event platform/x86: acer-wmi: setup accelerometer when ACPI device was found mm: Tighten x86 /dev/mem with zeroing reads virtio-console: avoid DMA from stack catc: Combine failure cleanup code in catc_probe() catc: Use heap buffer for memory size test net: ipv6: check route protocol when deleting routes Drivers: hv: don't leak memory in vmbus_establish_gpadl() Drivers: hv: get rid of timeout in vmbus_open() ubi/upd: Always flush after prepared for an update x86/mce/AMD: Give a name to MCA bank 3 when accessed with legacy MSRs powerpc: Reject binutils 2.24 when building little endian net/packet: fix overflow in check for tp_frame_nr net/packet: fix overflow in check for tp_reserve tty: nozomi: avoid a harmless gcc warning hostap: avoid uninitialized variable use in hfa384x_get_rid gfs2: avoid uninitialized variable warning net: neigh: guard against NULL solicit() method sctp: listen on the sock only when it's state is listening or closed ip6mr: fix notification device destruction MIPS: Fix crash registers on non-crashing CPUs RDS: Fix the atomicity for congestion map update xen/x86: don't lose event interrupts p9_client_readdir() fix nfsd: check for oversized NFSv2/v3 arguments ftrace/x86: Fix triple fault with graph tracing and suspend-to-ram kvm: nVMX: Allow L1 to intercept software exceptions (#BP and #OF) tun: read vnet_hdr_sz once printk: use rcuidle console tracepoint ipv6: check raw payload size correctly in ioctl x86: standardize mmap_rnd() usage x86/mm/32: Enable full randomization on i386 and X86_32 mm: larger stack guard gap, between vmas mm: fix new crash in unmapped_area_topdown() Allow stack to grow up to address space limit Linux 3.10.107 Signed-off-by: Nathan Chancellor <natechancellor@gmail.com> Conflicts: arch/x86/mm/mmap.c drivers/mmc/host/sdhci.c drivers/usb/host/xhci-plat.c fs/ext4/super.c kernel/sched/core.c
| * | | uapi: fix linux/packet_diag.h userspace compilation errorDmitry V. Levin2017-06-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | commit 745cb7f8a5de0805cade3de3991b7a95317c7c73 upstream. Replace MAX_ADDR_LEN with its numeric value to fix the following linux/packet_diag.h userspace compilation error: /usr/include/linux/packet_diag.h:67:17: error: 'MAX_ADDR_LEN' undeclared here (not in a function) __u8 pdmc_addr[MAX_ADDR_LEN]; This is not the first case in the UAPI where the numeric value of MAX_ADDR_LEN is used instead of symbolic one, uapi/linux/if_link.h already does the same: $ grep MAX_ADDR_LEN include/uapi/linux/if_link.h __u8 mac[32]; /* MAX_ADDR_LEN */ There are no UAPI headers besides these two that use MAX_ADDR_LEN. Signed-off-by: Dmitry V. Levin <ldv@altlinux.org> Acked-by: Pavel Emelyanov <xemul@virtuozzo.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Willy Tarreau <w@1wt.eu>
| * | | can: raw: raw_setsockopt: limit number of can_filter that can be setMarc Kleine-Budde2017-06-201-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | commit 332b05ca7a438f857c61a3c21a88489a21532364 upstream. This patch adds a check to limit the number of can_filters that can be set via setsockopt on CAN_RAW sockets. Otherwise allocations > MAX_ORDER are not prevented resulting in a warning. Reference: https://lkml.org/lkml/2016/12/2/230 Reported-by: Andrey Konovalov <andreyknvl@google.com> Tested-by: Andrey Konovalov <andreyknvl@google.com> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> Signed-off-by: Willy Tarreau <w@1wt.eu>
* | | | Merge 3.10.102 into android-msm-angler-3.10-oreo-m5Nathan Chancellor2018-01-241-0/+3
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Changes in 3.10.102: (144 commits) pipe: Fix buffer offset after partially failed read x86/iopl/64: Properly context-switch IOPL on Xen PV ext4: fix NULL pointer dereference in ext4_mark_inode_dirty() compiler-gcc: integrate the various compiler-gcc[345].h files x86: LLVMLinux: Fix "incomplete type const struct x86cpu_device_id" KVM: i8254: change PIT discard tick policy KVM: fix spin_lock_init order on x86 EDAC, amd64_edac: Shift wrapping issue in f1x_get_norm_dct_addr() PCI: Disable IO/MEM decoding for devices with non-compliant BARs linux/const.h: Add _BITUL() and _BITULL() x86: Rename X86_CR4_RDWRGSFS to X86_CR4_FSGSBASE x86, processor-flags: Fix the datatypes and add bit number defines x86/iopl: Fix iopl capability check on Xen PV sg: fix dxferp in from_to case aacraid: Fix memory leak in aac_fib_map_free be2iscsi: set the boot_kset pointer to NULL in case of failure usb: retry reset if a device times out USB: cdc-acm: more sanity checking USB: iowarrior: fix oops with malicious USB descriptors USB: usb_driver_claim_interface: add sanity checking USB: mct_u232: add sanity checking in probe USB: digi_acceleport: do sanity checking for the number of ports USB: cypress_m8: add endpoint sanity check USB: serial: cp210x: Adding GE Healthcare Device ID USB: option: add "D-Link DWM-221 B1" device id pwc: Add USB id for Philips Spc880nc webcam Input: powermate - fix oops with malicious USB descriptors net: irda: Fix use-after-free in irtty_open() 8250: use callbacks to access UART_DLL/UART_DLM bttv: Width must be a multiple of 16 when capturing planar formats media: v4l2-compat-ioctl32: fix missing length copy in put_v4l2_buffer32 ALSA: intel8x0: Add clock quirk entry for AD1981B on IBM ThinkPad X41. jbd2: fix FS corruption possibility in jbd2_journal_destroy() on umount path bcache: fix cache_set_flush() NULL pointer dereference on OOM watchdog: rc32434_wdt: fix ioctl error handling splice: handle zero nr_pages in splice_to_pipe() xtensa: ISS: don't hang if stdin EOF is reached xtensa: clear all DBREAKC registers on start md/raid5: Compare apples to apples (or sectors to sectors) rapidio/rionet: fix deadlock on SMP ipr: Fix out-of-bounds null overwrite ipr: Fix regression when loading firmware drm/radeon: Don't drop DP 2.7 Ghz link setup on some cards. tracing: Have preempt(irqs)off trace preempt disabled functions tracing: Fix crash from reading trace_pipe with sendfile tracing: Fix trace_printk() to print when not using bprintk() scripts/coccinelle: modernize & Input: ims-pcu - sanity check against missing interfaces Input: ati_remote2 - fix crashes on detecting device with invalid descriptor ocfs2/dlm: fix race between convert and recovery ocfs2/dlm: fix BUG in dlm_move_lockres_to_recovery_list mtd: onenand: fix deadlock in onenand_block_markbad sched/cputime: Fix steal time accounting vs. CPU hotplug perf/x86/intel: Fix PEBS data source interpretation on Nehalem/Westmere hwmon: (max1111) Return -ENODEV from max1111_read_channel if not instantiated parisc: Avoid function pointers for kernel exception routines parisc: Fix kernel crash with reversed copy_from_user() ALSA: timer: Use mod_timer() for rearming the system timer net: jme: fix suspend/resume on JMC260 sctp: lack the check for ports in sctp_v6_cmp_addr ipv6: re-enable fragment header matching in ipv6_find_hdr cdc_ncm: toggle altsetting to force reset before setup usbnet: cleanup after bind() in probe() udp6: fix UDP/IPv6 encap resubmit path sh_eth: fix NULL pointer dereference in sh_eth_ring_format() net: Fix use after free in the recvmmsg exit path farsync: fix off-by-one bug in fst_add_one ath9k: fix buffer overrun for ar9287 qlge: Fix receive packets drop. ppp: take reference on channels netns qmi_wwan: add "D-Link DWM-221 B1" device id ipv4: l2tp: fix a potential issue in l2tp_ip_recv ipv6: l2tp: fix a potential issue in l2tp_ip6_recv ip6_tunnel: set rtnl_link_ops before calling register_netdevice usb: renesas_usbhs: avoid NULL pointer derefernce in usbhsf_pkt_handler() usb: renesas_usbhs: disable TX IRQ before starting TX DMAC transfer ext4: add lockdep annotations for i_data_sem HID: usbhid: fix inconsistent reset/resume/reset-resume behavior drm/radeon: hold reference to fences in radeon_sa_bo_new (3.17 and older) usbvision-video: fix memory leak of alt_max_pkt_size usbvision: fix leak of usb_dev on failure paths in usbvision_probe() usbvision: fix crash on detecting device with invalid configuration usb: xhci: fix wild pointers in xhci_mem_cleanup usb: hcd: out of bounds access in for_each_companion crypto: gcm - Fix rfc4543 decryption crash nl80211: check netlink protocol in socket release notification Input: gtco - fix crash on detecting device without endpoints i2c: cpm: Fix build break due to incompatible pointer types EDAC: i7core, sb_edac: Don't return NOTIFY_BAD from mce_decoder callback ASoC: s3c24xx: use const snd_soc_component_driver pointer efi: Fix out-of-bounds read in variable_matches() workqueue: fix ghost PENDING flag while doing MQ IO USB: usbip: fix potential out-of-bounds write paride: make 'verbose' parameter an 'int' again fbdev: da8xx-fb: fix videomodes of lcd panels misc/bmp085: Enable building as a module rtc: vr41xx: Wire up alarm_irq_enable drivers/misc/ad525x_dpot: AD5274 fix RDAC read back errors include/linux/poison.h: fix LIST_POISON{1,2} offset Drivers: hv: vmbus: prevent cpu offlining on newer hypervisors perf stat: Document --detailed option ARM: OMAP3: Add cpuidle parameters table for omap3430 compiler-gcc: disable -ftracer for __noclone functions ipvs: correct initial offset of Call-ID header search in SIP persistence engine nbd: ratelimit error msgs after socket close clk: versatile: sp810: support reentrance lpfc: fix misleading indentation ARM: SoCFPGA: Fix secondary CPU startup in thumb2 kernel proc: prevent accessing /proc/<PID>/environ until it's ready batman-adv: Fix broadcast/ogm queue limit on a removed interface MAINTAINERS: Remove asterisk from EFI directory names ACPICA: Dispatcher: Update thread ID for recursive method calls USB: serial: cp210x: add ID for Link ECU USB: serial: cp210x: add Straizona Focusers device ids Input: ads7846 - correct the value got from SPI powerpc: scan_features() updates incorrect bits for REAL_LE crypto: hash - Fix page length clamping in hash walk get_rock_ridge_filename(): handle malformed NM entries Input: max8997-haptic - fix NULL pointer dereference asmlinkage, pnp: Make variables used from assembler code visible ARM: OMAP3: Fix booting with thumb2 kernel decnet: Do not build routes to devices without decnet private data. route: do not cache fib route info on local routes with oif packet: fix heap info leak in PACKET_DIAG_MCLIST sock_diag interface atl2: Disable unimplemented scatter/gather feature net: fix infoleak in llc net: fix infoleak in rtnetlink VSOCK: do not disconnect socket when peer has shutdown SEND only net: bridge: fix old ioctl unlocked net device walk net: fix a kernel infoleak in x25 module fs/cifs: correctly to anonymous authentication via NTLMSSP ring-buffer: Use long for nr_pages to avoid overflow failures ring-buffer: Prevent overflow of size in ring_buffer_resize() mfd: omap-usb-tll: Fix scheduling while atomic BUG mmc: mmc: Fix partition switch timeout for some eMMCs mmc: longer timeout for long read time quirk Bluetooth: vhci: purge unhandled skbs USB: serial: keyspan: fix use-after-free in probe error path USB: serial: quatech2: fix use-after-free in probe error path USB: serial: io_edgeport: fix memory leaks in probe error path USB: serial: option: add support for Cinterion PH8 and AHxx tty: vt, return error when con_startup fails serial: samsung: Reorder the sequence of clock control when call s3c24xx_serial_set_termios() Linux 3.10.102 Signed-off-by: Nathan Chancellor <natechancellor@gmail.com> Conflicts: drivers/media/v4l2-core/v4l2-compat-ioctl32.c fs/pipe.c kernel/trace/trace_printk.c net/core/rtnetlink.c net/socket.c
| * | | linux/const.h: Add _BITUL() and _BITULL()H. Peter Anvin2016-06-071-0/+3
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | commit 2fc016c5bd8aad2e201cdf71b9fb4573f94775bd upstream. Add macros for single bit definitions of a specific type. These are similar to the BIT() macro that already exists, but with a few exceptions: 1. The namespace is such that they can be used in uapi definitions. 2. The type is set with the _AC() macro to allow it to be used in assembly. 3. The type is explicitly specified to be UL or ULL. Signed-off-by: H. Peter Anvin <hpa@linux.intel.com> Link: http://lkml.kernel.org/n/tip-nbca8p7cg6jyjoit7klh3o91@git.kernel.org [wt: backported to 3.10 only to keep next patch clean] Signed-off-by: Willy Tarreau <w@1wt.eu>
* | | Merge 3.10.85 into android-msm-angler-3.10-oreo-m5Nathan Chancellor2018-01-241-1/+2
|\| | | |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Changes in 3.10.85: (90 commits) ipr: Increase default adapter init stage change timeout Disable write buffering on Toshiba ToPIC95 ALSA: hda - Add headset support to Acer Aspire V5 ALSA: hda - Fix the dock headphone output on Fujitsu Lifebook E780 ARC: add compiler barrier to LLSC based cmpxchg arm64: Do not attempt to use init_mm in reset_context() arm64: mm: Fix freeing of the wrong memmap entries with !SPARSEMEM_VMEMMAP arm64: vdso: work-around broken ELF toolchains in Makefile cpuidle / menu: Return (-1) if there are no suitable states regmap: Fix regmap_bulk_read in BE mode regulator: core: fix constraints output buffer spi: pl022: Specify 'num-cs' property as required in devicetree binding mtd: fix: avoid race condition when accessing mtd->usecount mtd: dc21285: use raw spinlock functions for nw_gpio_lock pinctrl: mvebu: armada-370: fix spi0 pin description pinctrl: mvebu: armada-xp: remove non-existing NAND pins pinctrl: mvebu: armada-xp: remove non-existing VDD cpu_pd functions pinctrl: mvebu: armada-xp: fix functions of MPP48 Bluetooth: btusb: Fix memory leak in Intel setup routine ath9k: fix DMA stop sequence for AR9003+ staging: rtl8712: prevent buffer overrun in recvbuf2recvframe ext4: fix race between truncate and __ext4_journalled_writepage() ext4: call sync_blockdev() before invalidate_bdev() in put_super() ext4: don't retry file block mapping on bigalloc fs with non-extent file ext4: fix reservation release on invalidatepage for delalloc fs ext4: be more strict when migrating to non-extent based file ext4: correctly migrate a file with a hole at the beginning ext4: replace open coded nofail allocation in ext4_free_blocks() jbd2: use GFP_NOFS in jbd2_cleanup_journal_tail() jbd2: fix ocfs2 corrupt when updating journal superblock fails i2c: at91: fix a race condition when using the DMA controller iio: DAC: ad5624r_spi: fix bit shift of output data value af9013: Don't accept invalid bandwidth s5h1420: fix a buffer overflow when checking userspace params cx24116: fix a buffer overflow when checking userspace params ASoC: wm8737: Fixup setting VMID Impedance control register ASoC: wm8955: Fix setting wrong register for WM8955_K_8_0_MASK bits ASoC: wm8903: Fix define for WM8903_VMID_RES_250K ASoC: wm8960: the enum of "DAC Polarity" should be wm8960_enum[1] libata: add ATA_HORKAGE_BROKEN_FPDMA_AA quirk for HP 250GB SATA disk VB0250EAVER libata: increase the timeout when setting transfer mode usb: dwc3: gadget: return error if command sent to DGCMD register fails usb: dwc3: gadget: return error if command sent to DEPCMD register fails usb: dwc3: Reset the transfer resource index on SET_INTERFACE USB: devio: fix a condition in async_completed() USB: cp210x: add ID for Aruba Networks controllers USB: option: add 2020:4000 ID usb: xhci: Bugfix for NULL pointer deference in xhci_endpoint_init() function dm btree remove: fix bug in redistribute3 dm btree: silence lockdep lock inversion in dm_btree_del() mmc: block: Add missing mmc_blk_put() in power_ro_lock_show() drm/qxl: Do not cause spice-server to clean our objects drm/radeon: take the mode_config mutex when dealing with hpds (v2) drm/radeon: Don't flush the GART TLB if rdev->gart.ptr == NULL drm: add a check for x/y in drm_mode_setcrtc xfs: fix remote symlinks on V5/CRC filesystems vTPM: set virtual device before passing to ibmvtpm_reset_crq libata: add ATA_HORKAGE_NOTRIM libata: force disable trim for SuperSSpeed S238 tracing/filter: Do not WARN on operand count going below zero tracing/filter: Do not allow infix to exceed end of string tracing: Have branch tracer use recursive field of task struct dmaengine: mv_xor: bug fix for racing condition in descriptors cleanup hwmon: (mcp3021) Fix broken output scaling md: fix a build warning Btrfs: use kmem_cache_free when freeing entry in inode cache fuse: initialize fc->release before calling it crush: fix a bug in tree bucket decode ACPICA: Tables: Fix an issue that FACS initialization is performed twice iscsi-target: Convert iscsi_thread_set usage to kthread.h iser-target: Fix possible deadlock in RDMA_CM connection error iser-target: release stale iser connections mmc: card: Fixup request missing in mmc_blk_issue_rw_rq __bitmap_parselist: fix bug in empty string handling mac80211: prevent possible crypto tx tailroom corruption USB: usbfs: allow URBs to be reaped after disconnection watchdog: omap: assert the counter being stopped before reprogramming NFS: Fix size of NFSACL SETACL operations fixing infinite OPEN loop in 4.0 stateid recovery nfs: increase size of EXCHANGE_ID name string buffer SUNRPC: Fix a memory leak in the backchannel code 9p: forgetting to cancel request on interrupted zero-copy RPC 9p: don't leave a half-initialized inode sitting around rbd: use GFP_NOIO in rbd_obj_request_create() agp/intel: Fix typo in needs_ilk_vtd_wa() hpfs: hpfs_error: Remove static buffer, use vsprintf extension %pV instead Fix firmware loader uevent buffer NULL pointer dereference qla2xxx: Mark port lost when we receive an RSCN for it. MIPS: KVM: Do not sign extend on unsigned MMIO load Linux 3.10.85 Signed-off-by: Nathan Chancellor <natechancellor@gmail.com> Conflicts: drivers/usb/dwc3/gadget.c
| * USB: usbfs: allow URBs to be reaped after disconnectionAlan Stern2015-08-031-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | commit 3f2cee73b650921b2e214bf487b2061a1c266504 upstream. The usbfs API has a peculiar hole: Users are not allowed to reap their URBs after the device has been disconnected. There doesn't seem to be any good reason for this; it is an ad-hoc inconsistency. The patch allows users to issue the USBDEVFS_REAPURB and USBDEVFS_REAPURBNDELAY ioctls (together with their 32-bit counterparts on 64-bit systems) even after the device is gone. If no URBs are pending for a disconnected device then the ioctls will return -ENODEV rather than -EAGAIN, because obviously no new URBs will ever be able to complete. The patch also adds a new capability flag for USBDEVFS_GET_CAPABILITIES to indicate that the reap-after-disconnect feature is supported. Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Tested-by: Chris Dickens <christopher.a.dickens@gmail.com> Acked-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* | Merge July 2017 security patches.Andrew Chant2017-05-171-3/+0
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | Merge 'android-msm-angler-3.10-nyc-mr2' into 'android-msm-angler-3.10' July 2017.1 Bug: 38138153 Change-Id: Iae7063a924ca6f0e23c311cc33de33e12b5ef954
| * | ashmem: remove cache maintenance supportDennis Cagle2017-05-171-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The cache maintenance routines in ashmem were causing several security issues. Since they are not being used anymore by any drivers, its well to remove them entirely. Bug: 34126808 Bug: 34173755 Bug: 34203176 CRs-Fixed: 1107034, 2001129, 2007786 Change-Id: I955e33d90b888d58db5cf6bb490905283374425b Signed-off-by: Sudarshan Rajagopalan <sudaraja@codeaurora.org> Signed-off-by: Dennis Cagle <d-cagle@codeaurora.org>
* | | msm: kgsl: Allow draw context to perform only replay on recoveryHareesh Gundu2017-04-211-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Robust context attempts to perform a rendering that takes too long whether due to an infinite loop in a shader or even just a rendering operation that takes too long on the given hardware. This type of attempts can result into GPU faults. Robust context expect driver to replay IB instead skip IB and if it fails on replay context has to be invalidated. KGSL_CONTEXT_INVALIDATE_ON_FAULT flag allows draw context to execute only replay policy on GPU fault recovery instead of going to default recovery policy. User space has to set this flag during the context creation. Bug: 34887800 Change-Id: If42dc5afc7d5ed1226b73ae5abfa2648d7acf2c3 Signed-off-by: Hareesh Gundu <hareeshg@codeaurora.org>
* | | BACKPORT: ipv6 addrconf: implement RFC7559 router solicitation backoffMaciej Żenczykowski2017-04-111-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This implements: https://tools.ietf.org/html/rfc7559 Backoff is performed according to RFC3315 section 14: https://tools.ietf.org/html/rfc3315#section-14 We allow setting /proc/sys/net/ipv6/conf/*/router_solicitations to a negative value meaning an unlimited number of retransmits, and we make this the new default (inline with the RFC). We also add a new setting: /proc/sys/net/ipv6/conf/*/router_solicitation_max_interval defaulting to 1 hour (per RFC recommendation). Signed-off-by: Maciej Żenczykowski <maze@google.com> Acked-by: Erik Kline <ek@google.com> Signed-off-by: David S. Miller <davem@davemloft.net> (cherry picked from commit bd11f0741fa5a2c296629898ad07759dd12b35bb in DaveM's net-next/master, should make Linus' tree in 4.9-rc1) Change-Id: Ia32cdc5c61481893ef8040734e014bf2229fc39e
* | | net: ipv6: Add sysctl for minimum prefix len acceptable in RIOs.Joel Scherpelz2017-04-072-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit adds a new sysctl accept_ra_rt_info_min_plen that defines the minimum acceptable prefix length of Route Information Options. The new sysctl is intended to be used together with accept_ra_rt_info_max_plen to configure a range of acceptable prefix lengths. It is useful to prevent misconfigurations from unintentionally blackholing too much of the IPv6 address space (e.g., home routers announcing RIOs for fc00::/7, which is incorrect). Backport of net-next commit bbea124bc99d ("net: ipv6: Add sysctl for minimum prefix len acceptable in RIOs.") [lorenzo@google.com: fixed conflicts in include/uapi/linux/ipv6.h] Bug: 33333670 Test: net_test passes Signed-off-by: Joel Scherpelz <jscherpelz@google.com> Acked-by: Lorenzo Colitti <lorenzo@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* | | BACKPORT: hw_breakpoint: Allow watchpoint of length 3,5,6 and 7Pratyush Anand2017-02-131-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (cherry picked from commit 651be3cb085341a21847e47c694c249c3e1e4e5b) We only support breakpoint/watchpoint of length 1, 2, 4 and 8. If we can support other length as well, then user may watch more data with less number of watchpoints (provided hardware supports it). For example: if we have to watch only 4th, 5th and 6th byte from a 64 bit aligned address, we will have to use two slots to implement it currently. One slot will watch a half word at offset 4 and other a byte at offset 6. If we can have a watchpoint of length 3 then we can watch it with single slot as well. ARM64 hardware does support such functionality, therefore adding these new definitions in generic layer. Signed-off-by: Pratyush Anand <panand@redhat.com> Signed-off-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Pavel Labath <labath@google.com> [pavel: tools/include/uapi/linux/hw_breakpoint.h is not present in this branch] Change-Id: Ie17ed89ca526e4fddf591bb4e556fdfb55fc2eac Bug: 30919905
* | | usb: gadget: f_fs: Increase EP_ALLOC ioctl numberJerry Zhang2017-02-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | Prevent conflict with possible new upstream ioctls before it itself is upstreamed. Test: None Change-Id: I10cbc01c25f920a626ea7559e8ca80ee08865333 Signed-off-by: Jerry Zhang <zhangjerry@google.com>
* | | Merge branch android-msm-angler-3.10-nyc-mr2 into android-msm-angler-3.10Patrick Tjin2017-01-261-0/+8
|\| |
| * | BACKPORT: random: introduce getrandom(2) system callTheodore Ts'o2017-01-261-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Almost clean cherry pick of c6e9d6f38894798696f23c8084ca7edbf16ee895, includes change made by merge 0891ad829d2a0501053703df66029e843e3b8365. The getrandom(2) system call was requested by the LibreSSL Portable developers. It is analoguous to the getentropy(2) system call in OpenBSD. The rationale of this system call is to provide resiliance against file descriptor exhaustion attacks, where the attacker consumes all available file descriptors, forcing the use of the fallback code where /dev/[u]random is not available. Since the fallback code is often not well-tested, it is better to eliminate this potential failure mode entirely. The other feature provided by this new system call is the ability to request randomness from the /dev/urandom entropy pool, but to block until at least 128 bits of entropy has been accumulated in the /dev/urandom entropy pool. Historically, the emphasis in the /dev/urandom development has been to ensure that urandom pool is initialized as quickly as possible after system boot, and preferably before the init scripts start execution. This is because changing /dev/urandom reads to block represents an interface change that could potentially break userspace which is not acceptable. In practice, on most x86 desktop and server systems, in general the entropy pool can be initialized before it is needed (and in modern kernels, we will printk a warning message if not). However, on an embedded system, this may not be the case. And so with this new interface, we can provide the functionality of blocking until the urandom pool has been initialized. Any userspace program which uses this new functionality must take care to assure that if it is used during the boot process, that it will not cause the init scripts or other portions of the system startup to hang indefinitely. SYNOPSIS #include <linux/random.h> int getrandom(void *buf, size_t buflen, unsigned int flags); DESCRIPTION The system call getrandom() fills the buffer pointed to by buf with up to buflen random bytes which can be used to seed user space random number generators (i.e., DRBG's) or for other cryptographic uses. It should not be used for Monte Carlo simulations or other programs/algorithms which are doing probabilistic sampling. If the GRND_RANDOM flags bit is set, then draw from the /dev/random pool instead of the /dev/urandom pool. The /dev/random pool is limited based on the entropy that can be obtained from environmental noise, so if there is insufficient entropy, the requested number of bytes may not be returned. If there is no entropy available at all, getrandom(2) will either block, or return an error with errno set to EAGAIN if the GRND_NONBLOCK bit is set in flags. If the GRND_RANDOM bit is not set, then the /dev/urandom pool will be used. Unlike using read(2) to fetch data from /dev/urandom, if the urandom pool has not been sufficiently initialized, getrandom(2) will block (or return -1 with the errno set to EAGAIN if the GRND_NONBLOCK bit is set in flags). The getentropy(2) system call in OpenBSD can be emulated using the following function: int getentropy(void *buf, size_t buflen) { int ret; if (buflen > 256) goto failure; ret = getrandom(buf, buflen, 0); if (ret < 0) return ret; if (ret == buflen) return 0; failure: errno = EIO; return -1; } RETURN VALUE On success, the number of bytes that was filled in the buf is returned. This may not be all the bytes requested by the caller via buflen if insufficient entropy was present in the /dev/random pool, or if the system call was interrupted by a signal. On error, -1 is returned, and errno is set appropriately. ERRORS EINVAL An invalid flag was passed to getrandom(2) EFAULT buf is outside the accessible address space. EAGAIN The requested entropy was not available, and getentropy(2) would have blocked if the GRND_NONBLOCK flag was not set. EINTR While blocked waiting for entropy, the call was interrupted by a signal handler; see the description of how interrupted read(2) calls on "slow" devices are handled with and without the SA_RESTART flag in the signal(7) man page. NOTES For small requests (buflen <= 256) getrandom(2) will not return EINTR when reading from the urandom pool once the entropy pool has been initialized, and it will return all of the bytes that have been requested. This is the recommended way to use getrandom(2), and is designed for compatibility with OpenBSD's getentropy() system call. However, if you are using GRND_RANDOM, then getrandom(2) may block until the entropy accounting determines that sufficient environmental noise has been gathered such that getrandom(2) will be operating as a NRBG instead of a DRBG for those people who are working in the NIST SP 800-90 regime. Since it may block for a long time, these guarantees do *not* apply. The user may want to interrupt a hanging process using a signal, so blocking until all of the requested bytes are returned would be unfriendly. For this reason, the user of getrandom(2) MUST always check the return value, in case it returns some error, or if fewer bytes than requested was returned. In the case of !GRND_RANDOM and small request, the latter should never happen, but the careful userspace code (and all crypto code should be careful) should check for this anyway! Finally, unless you are doing long-term key generation (and perhaps not even then), you probably shouldn't be using GRND_RANDOM. The cryptographic algorithms used for /dev/urandom are quite conservative, and so should be sufficient for all purposes. The disadvantage of GRND_RANDOM is that it can block, and the increased complexity required to deal with partially fulfilled getrandom(2) requests. Signed-off-by: Theodore Ts'o <tytso@mit.edu> Reviewed-by: Zach Brown <zab@zabbo.net> Bug: http://b/29621447 Change-Id: I189ba74070dd6d918b0fdf83ff30bb74ec0f7556 (cherry picked from commit 4af712e8df998475736f3e2727701bd31e3751a9)
* | | sdcardfs: Change magic valueDaniel Rosenberg2017-01-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Sdcardfs uses the same magic value as wrapfs. This should not be the case. As it is entirely in memory, the value can be changed without any loss of compatibility. Change-Id: I24200b805d5e6d32702638be99e47d50d7f2f746 Signed-off-by: Daniel Rosenberg <drosen@google.com>
* | | net: core: add UID to flows, rules, and routesLorenzo Colitti2016-12-202-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Define a new FIB rule attributes, FRA_UID_RANGE, to describe a range of UIDs. - Define a RTA_UID attribute for per-UID route lookups and dumps. - Support passing these attributes to and from userspace via rtnetlink. The value INVALID_UID indicates no UID was specified. - Add a UID field to the flow structures. [Backport of net-next 622ec2c9d52405973c9f1ca5116eb1c393adfc7d] Bug: 16355602 Change-Id: I7e3ab388ed862c4b7e39dc8b0209d977cb1129ac Signed-off-by: Lorenzo Colitti <lorenzo@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* | | Revert "net: core: Support UID-based routing."Lorenzo Colitti2016-12-202-3/+0
| | | | | | | | | | | | | | | | | | | | | This reverts commit f6f535d3e0d8da2b5bc3c93690c47485d29e4ce6. Bug: 16355602 Change-Id: I5987e276f5ddbe425ea3bd86861cee0ae22212d9
* | | usb: gadget: f_fs: Add ioctl for allocating endpoint buffers.Jerry Zhang2016-12-191-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This creates an ioctl named FUNCTIONFS_ENDPOINT_ALLOC which will preallocate buffers for a given size. Any reads/writes on that endpoint below that size will use those buffers instead of allocating their own. If the endpoint is not active, the buffer will not be allocated until it becomes active. Change-Id: I4da517620ed913161ea9e21a31f6b92c9a012b44 Signed-off-by: Jerry Zhang <zhangjerry@google.com>
* | | usb: gadget: f_fs: add ioctl returning ep descriptorRobert Baldyga2016-12-191-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch introduces ioctl named FUNCTIONFS_ENDPOINT_DESC, which returns endpoint descriptor to userspace. It works only if function is active. Signed-off-by: Robert Baldyga <r.baldyga@samsung.com> Acked-by: Michal Nazarewicz <mina86@mina86.com> Signed-off-by: Felipe Balbi <balbi@ti.com> Signed-off-by: Jerry Zhang <zhangjerry@google.com> Change-Id: I55987bf0c6744327f7763b567b5a2b39c50d18e6
* | | UPSTREAM: capabilities: ambient capabilitiesAndy Lutomirski2016-12-051-0/+7
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Credit where credit is due: this idea comes from Christoph Lameter with a lot of valuable input from Serge Hallyn. This patch is heavily based on Christoph's patch. ===== The status quo ===== On Linux, there are a number of capabilities defined by the kernel. To perform various privileged tasks, processes can wield capabilities that they hold. Each task has four capability masks: effective (pE), permitted (pP), inheritable (pI), and a bounding set (X). When the kernel checks for a capability, it checks pE. The other capability masks serve to modify what capabilities can be in pE. Any task can remove capabilities from pE, pP, or pI at any time. If a task has a capability in pP, it can add that capability to pE and/or pI. If a task has CAP_SETPCAP, then it can add any capability to pI, and it can remove capabilities from X. Tasks are not the only things that can have capabilities; files can also have capabilities. A file can have no capabilty information at all [1]. If a file has capability information, then it has a permitted mask (fP) and an inheritable mask (fI) as well as a single effective bit (fE) [2]. File capabilities modify the capabilities of tasks that execve(2) them. A task that successfully calls execve has its capabilities modified for the file ultimately being excecuted (i.e. the binary itself if that binary is ELF or for the interpreter if the binary is a script.) [3] In the capability evolution rules, for each mask Z, pZ represents the old value and pZ' represents the new value. The rules are: pP' = (X & fP) | (pI & fI) pI' = pI pE' = (fE ? pP' : 0) X is unchanged For setuid binaries, fP, fI, and fE are modified by a moderately complicated set of rules that emulate POSIX behavior. Similarly, if euid == 0 or ruid == 0, then fP, fI, and fE are modified differently (primary, fP and fI usually end up being the full set). For nonroot users executing binaries with neither setuid nor file caps, fI and fP are empty and fE is false. As an extra complication, if you execute a process as nonroot and fE is set, then the "secure exec" rules are in effect: AT_SECURE gets set, LD_PRELOAD doesn't work, etc. This is rather messy. We've learned that making any changes is dangerous, though: if a new kernel version allows an unprivileged program to change its security state in a way that persists cross execution of a setuid program or a program with file caps, this persistent state is surprisingly likely to allow setuid or file-capped programs to be exploited for privilege escalation. ===== The problem ===== Capability inheritance is basically useless. If you aren't root and you execute an ordinary binary, fI is zero, so your capabilities have no effect whatsoever on pP'. This means that you can't usefully execute a helper process or a shell command with elevated capabilities if you aren't root. On current kernels, you can sort of work around this by setting fI to the full set for most or all non-setuid executable files. This causes pP' = pI for nonroot, and inheritance works. No one does this because it's a PITA and it isn't even supported on most filesystems. If you try this, you'll discover that every nonroot program ends up with secure exec rules, breaking many things. This is a problem that has bitten many people who have tried to use capabilities for anything useful. ===== The proposed change ===== This patch adds a fifth capability mask called the ambient mask (pA). pA does what most people expect pI to do. pA obeys the invariant that no bit can ever be set in pA if it is not set in both pP and pI. Dropping a bit from pP or pI drops that bit from pA. This ensures that existing programs that try to drop capabilities still do so, with a complication. Because capability inheritance is so broken, setting KEEPCAPS, using setresuid to switch to nonroot uids, and then calling execve effectively drops capabilities. Therefore, setresuid from root to nonroot conditionally clears pA unless SECBIT_NO_SETUID_FIXUP is set. Processes that don't like this can re-add bits to pA afterwards. The capability evolution rules are changed: pA' = (file caps or setuid or setgid ? 0 : pA) pP' = (X & fP) | (pI & fI) | pA' pI' = pI pE' = (fE ? pP' : pA') X is unchanged If you are nonroot but you have a capability, you can add it to pA. If you do so, your children get that capability in pA, pP, and pE. For example, you can set pA = CAP_NET_BIND_SERVICE, and your children can automatically bind low-numbered ports. Hallelujah! Unprivileged users can create user namespaces, map themselves to a nonzero uid, and create both privileged (relative to their namespace) and unprivileged process trees. This is currently more or less impossible. Hallelujah! You cannot use pA to try to subvert a setuid, setgid, or file-capped program: if you execute any such program, pA gets cleared and the resulting evolution rules are unchanged by this patch. Users with nonzero pA are unlikely to unintentionally leak that capability. If they run programs that try to drop privileges, dropping privileges will still work. It's worth noting that the degree of paranoia in this patch could possibly be reduced without causing serious problems. Specifically, if we allowed pA to persist across executing non-pA-aware setuid binaries and across setresuid, then, naively, the only capabilities that could leak as a result would be the capabilities in pA, and any attacker *already* has those capabilities. This would make me nervous, though -- setuid binaries that tried to privilege-separate might fail to do so, and putting CAP_DAC_READ_SEARCH or CAP_DAC_OVERRIDE into pA could have unexpected side effects. (Whether these unexpected side effects would be exploitable is an open question.) I've therefore taken the more paranoid route. We can revisit this later. An alternative would be to require PR_SET_NO_NEW_PRIVS before setting ambient capabilities. I think that this would be annoying and would make granting otherwise unprivileged users minor ambient capabilities (CAP_NET_BIND_SERVICE or CAP_NET_RAW for example) much less useful than it is with this patch. ===== Footnotes ===== [1] Files that are missing the "security.capability" xattr or that have unrecognized values for that xattr end up with has_cap set to false. The code that does that appears to be complicated for no good reason. [2] The libcap capability mask parsers and formatters are dangerously misleading and the documentation is flat-out wrong. fE is *not* a mask; it's a single bit. This has probably confused every single person who has tried to use file capabilities. [3] Linux very confusingly processes both the script and the interpreter if applicable, for reasons that elude me. The results from thinking about a script's file capabilities and/or setuid bits are mostly discarded. Preliminary userspace code is here, but it needs updating: https://git.kernel.org/cgit/linux/kernel/git/luto/util-linux-playground.git/commit/?h=cap_ambient&id=7f5afbd175d2 Here is a test program that can be used to verify the functionality (from Christoph): /* * Test program for the ambient capabilities. This program spawns a shell * that allows running processes with a defined set of capabilities. * * (C) 2015 Christoph Lameter <cl@linux.com> * Released under: GPL v3 or later. * * * Compile using: * * gcc -o ambient_test ambient_test.o -lcap-ng * * This program must have the following capabilities to run properly: * Permissions for CAP_NET_RAW, CAP_NET_ADMIN, CAP_SYS_NICE * * A command to equip the binary with the right caps is: * * setcap cap_net_raw,cap_net_admin,cap_sys_nice+p ambient_test * * * To get a shell with additional caps that can be inherited by other processes: * * ./ambient_test /bin/bash * * * Verifying that it works: * * From the bash spawed by ambient_test run * * cat /proc/$$/status * * and have a look at the capabilities. */ /* * Definitions from the kernel header files. These are going to be removed * when the /usr/include files have these defined. */ static void set_ambient_cap(int cap) { int rc; capng_get_caps_process(); rc = capng_update(CAPNG_ADD, CAPNG_INHERITABLE, cap); if (rc) { printf("Cannot add inheritable cap\n"); exit(2); } capng_apply(CAPNG_SELECT_CAPS); /* Note the two 0s at the end. Kernel checks for these */ if (prctl(PR_CAP_AMBIENT, PR_CAP_AMBIENT_RAISE, cap, 0, 0)) { perror("Cannot set cap"); exit(1); } } int main(int argc, char **argv) { int rc; set_ambient_cap(CAP_NET_RAW); set_ambient_cap(CAP_NET_ADMIN); set_ambient_cap(CAP_SYS_NICE); printf("Ambient_test forking shell\n"); if (execv(argv[1], argv + 1)) perror("Cannot exec"); return 0; } Signed-off-by: Christoph Lameter <cl@linux.com> # Original author Signed-off-by: Andy Lutomirski <luto@kernel.org> Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com> Acked-by: Kees Cook <keescook@chromium.org> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Aaron Jones <aaronmdjones@gmail.com> Cc: Ted Ts'o <tytso@mit.edu> Cc: Andrew G. Morgan <morgan@kernel.org> Cc: Mimi Zohar <zohar@linux.vnet.ibm.com> Cc: Austin S Hemmelgarn <ahferroin7@gmail.com> Cc: Markku Savela <msa@moth.iki.fi> Cc: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> Cc: Michael Kerrisk <mtk.manpages@gmail.com> Cc: James Morris <james.l.morris@oracle.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> (cherry picked from commit 58319057b7847667f0c9585b9de0e8932b0fdb08) Bug: 31038224 Test: Builds. Change-Id: I55fbe6e6d3fbb48edbea15bedd81d90ed50fd575 Signed-off-by: Jorge Lucangeli Obes <jorgelo@google.com>
* | net: inet: diag: expose the socket mark to privileged processes.Lorenzo Colitti2016-09-201-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds the capability for a process that has CAP_NET_ADMIN on a socket to see the socket mark in socket dumps. Commit a52e95abf772 ("net: diag: allow socket bytecode filters to match socket marks") recently gave privileged processes the ability to filter socket dumps based on mark. This patch is complementary: it ensures that the mark is also passed to userspace in the socket's netlink attributes. It is useful for tools like ss which display information about sockets. [backport of net-next d545caca827b65aab557a9e9dcdcf1e5a3823c2d] Change-Id: I0c9708aae5ab8dfa296b8a1e6aecceb2a382415a Tested: https://android-review.googlesource.com/270210 Signed-off-by: Lorenzo Colitti <lorenzo@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* | net: diag: allow socket bytecode filters to match socket marksLorenzo Colitti2016-09-201-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows a privileged process to filter by socket mark when dumping sockets via INET_DIAG_BY_FAMILY. This is useful on systems that use mark-based routing such as Android. The ability to filter socket marks requires CAP_NET_ADMIN, which is consistent with other privileged operations allowed by the SOCK_DIAG interface such as the ability to destroy sockets and the ability to inspect BPF filters attached to packet sockets. [backport of net-next a52e95abf772b43c9226e9a72d3c1353903ba96f] Change-Id: Ic02caf628a71007cc7c48c9da220b4088f5aa4f4 Tested: https://android-review.googlesource.com/261350 Signed-off-by: Lorenzo Colitti <lorenzo@google.com> Acked-by: David Ahern <dsa@cumulusnetworks.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* | net: diag: Add support to filter on device indexDavid Ahern2016-09-201-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | Add support to inet_diag facility to filter sockets based on device index. If an interface index is in the filter only sockets bound to that index (sk_bound_dev_if) are returned. [backport of net-next 637c841dd7a5f9bd97b75cbe90b526fa1a52e530] Change-Id: Ib430cfb44f1b3b1a771a561247ee9140737e52fd Signed-off-by: David Ahern <dsa@cumulusnetworks.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* | fuse: Add support for shortcircuited read/write for filesNikhilesh Reddy2016-09-201-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add support for shortcircuited read/write for files when enabled through a userspace init option of FUSE_SHORTCIRCUIT. When FUSE_SHORTCIRCUIT is enabled all the reads and writes to the fuse mount point go directly to the native filesystem rather than through the fuse daemon. All requsts that aren't read/write still go thought the userspace code. This allows for significantly better performance on read and writes and the difference between fuse and the native lower filesystem is negligible. Bug: 30222859 Change-Id: I49e21b77813595c2faec6fcba38a74e8f686d020 Signed-off-by: Nikhilesh Reddy <reddyn@codeaurora.org>
* | fuse: Add support for d_canonical_pathDaniel Rosenberg2016-04-261-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | Allows FUSE to report to inotify that it is acting as a layered filesystem. The userspace component returns a string representing the location of the underlying file. If the string cannot be resolved into a path, the top level path is returned instead. bug: 23904372 Change-Id: Iabdca0bbedfbff59e9c820c58636a68ef9683d9f Signed-off-by: Daniel Rosenberg <drosen@google.com>
* | Initial port of sdcardfsDaniel Campello2016-03-291-0/+2
| | | | | | | | | | Change-Id: I5b5772a2bbff9f3a7dda641644630a7b8afacec0 (cherry picked from commit 725af4e5e73147c79c7788ab80eec1faf1a53477)
* | net: diag: Add the ability to destroy a socket.Lorenzo Colitti2016-01-271-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds a SOCK_DESTROY operation, a destroy function pointer to sock_diag_handler, and a diag_destroy function pointer. It does not include any implementation code. [Backport of net-next 64be0aed59ad519d6f2160868734f7e278290ac1] Change-Id: I3db262a7e41f1f8452ff0968d4001234598190d8 Signed-off-by: Lorenzo Colitti <lorenzo@google.com> Acked-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* | Add ioctl for low persistence display mode to MDSS driver.Ruben Brunk2016-01-221-0/+1
| | | | | | | | | | Bug: 26217194 Change-Id: I996756f6d31b5f31fd02141a2d8130e313ff0833
* | msm: vidc: Allow clients to specify/query the colorspacePraveen Chavan2015-10-081-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When encoder clients specify the color space, the resulting bitstream will have the color space embedded in it. This allows for the decoder to display the picture accurately without the color being skewed. Similarly decoder clients can query the color space of the bitstream by enabling MSM_VIDC_EXTRADATA_VUI_DISPLAY_INFO. If the bitstream contains the colorspace hint, the appropriate extradata will be emitted by the decoder. Author: Deva Ramasubramanian <dramasub@codeaurora.org> Change-Id: I83a3e28b13c3aa306e7cc2d1552a6d39c0d3d49f Signed-off-by: Deva Ramasubramanian <dramasub@codeaurora.org> Signed-off-by: Praveen Chavan <pchavan@codeaurora.org>
* | net: core: Support UID-based routing.Lorenzo Colitti2015-09-052-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This contains the following commits: 1. cc2f522 net: core: Add a UID range to fib rules. 2. d7ed2bd net: core: Use the socket UID in routing lookups. 3. 2f9306a net: core: Add a RTA_UID attribute to routes. This is so that userspace can do per-UID route lookups. 4. 8e46efb net: ipv6: Use the UID in IPv6 PMTUD IPv4 PMTUD already does this because ipv4_sk_update_pmtu uses __build_flow_key, which includes the UID. Bug: 21631099 Change-Id: I81bd31dae655de9cce7d7a1f9a905dc1c2feba7c Signed-off-by: Lorenzo Colitti <lorenzo@google.com>
* | Revert "net: core: Support UID-based routing."Lorenzo Colitti2015-09-052-3/+0
| | | | | | | | | | Bug: 21631099 This reverts commit a2a8c3636428e8ea6a4d9becbac3c0c0a41675c5.
* | ipv6: sysctl to restrict candidate source addressesErik Kline2015-09-051-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Per RFC 6724, section 4, "Candidate Source Addresses": It is RECOMMENDED that the candidate source addresses be the set of unicast addresses assigned to the interface that will be used to send to the destination (the "outgoing" interface). Add a sysctl to enable this behaviour. Signed-off-by: Erik Kline <ek@google.com> Signed-off-by: David S. Miller <davem@davemloft.net> [Simplified back-port of net-next 3985e8a3611a93bb36789f65db862e5700aab65e] Bug: 21631099 Change-Id: Ib74ef945dcabe64215064f15ee1660b6524d65ce
* | net: ipv6: Add a sysctl to make optimistic addresses useful candidatesErik Kline2015-09-051-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a sysctl that causes an interface's optimistic addresses to be considered equivalent to other non-deprecated addresses for source address selection purposes. Preferred addresses will still take precedence over optimistic addresses, subject to other ranking in the source address selection algorithm. This is useful where different interfaces are connected to different networks from different ISPs (e.g., a cell network and a home wifi network). The current behaviour complies with RFC 3484/6724, and it makes sense if the host has only one interface, or has multiple interfaces on the same network (same or cooperating administrative domain(s), but not in the multiple distinct networks case. For example, if a mobile device has an IPv6 address on an LTE network and then connects to IPv6-enabled wifi, while the wifi IPv6 address is undergoing DAD, IPv6 connections will try use the wifi default route with the LTE IPv6 address, and will get stuck until they time out. Also, because optimistic nodes can receive frames, issue an RTM_NEWADDR as soon as DAD starts (with the IFA_F_OPTIMSTIC flag appropriately set). A second RTM_NEWADDR is sent if DAD completes (the address flags have changed), otherwise an RTM_DELADDR is sent. Also: add an entry in ip-sysctl.txt for optimistic_dad. [cherry-pick of net-next 7fd2561e4ebdd070ebba6d3326c4c5b13942323f] Bug: 21631099 Signed-off-by: Erik Kline <ek@google.com> Acked-by: Lorenzo Colitti <lorenzo@google.com> Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Lorenzo Colitti <lorenzo@google.com> Change-Id: Ic7e50781c607e1f3a492d9ce7395946efb95c533
* | cfg80211: Add indoor only and GO concurrent channel attributesDavid Spinadel2015-08-131-0/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The FCC are clarifying some soft configuration requirements, which among other include the following: 1. Indoor operation, where a device can use channels requiring indoor operation, subject to that it can guarantee indoor operation, i.e., the device is connected to AC Power or the device is under the control of a local master that is acting as an AP and is connected to AC Power. 2. Concurrent GO operation, where devices may instantiate a P2P GO while they are under the guidance of an authorized master. For example, on a channel on which a BSS is connected to an authorized master, i.e., with DFS and radar detection capability in the UNII band. See https://apps.fcc.gov/eas/comments/GetPublishedDocument.html?id=327&tn=528122 Add support for advertising Indoor-only and GO-Concurrent channel properties. Change-Id: Icd3a21f6f9c539d1323200e3ccce245238cbff3b Signed-off-by: David Spinadel <david.spinadel@intel.com> Signed-off-by: Ilan Peer <ilan.peer@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com> Git-commit: 570dbde137d4604e4e682a5855b4425233344c19 Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git CRs-Fixed: 754373 Signed-off-by: Samuel Ahn <sahn@codeaurora.org> Signed-off-by: Amar Singhal <asinghal@codeaurora.org>
* | Revert "msm: mdss: Override partial update PP block using ioctl"Ken Zhang2015-08-101-11/+0
| | | | | | | | | | | | | | | | | | | | This reverts commit 679dc362a9effee922ef2ce1447424b318f667bc. The way overriding partial update via PP ioctl is obsolete, partial update control is going through sysfs. The left code is blocking pp ioctl even partial update is disabled dynamically. Change-Id: Icb455a0101b53c58ae6c1b2686bd2297b4832396 Signed-off-by: Ken Zhang <kenz@codeaurora.org>
* | netfilter: xt_socket: add XT_SOCKET_RESTORESKMARK flagHarout Hedeshian2015-08-101-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | xt_socket is useful for matching sockets with IP_TRANSPARENT and taking some action on the matching packets. However, it lacks the ability to match only a small subset of transparent sockets. Suppose there are 2 applications, each with its own set of transparent sockets. The first application wants all matching packets dropped, while the second application wants them forwarded somewhere else. Add the ability to retore the skb->mark from the sk_mark. The mark is only restored if a matching socket is found and the transparent / nowildcard conditions are satisfied. Now the 2 hypothetical applications can differentiate their sockets based on a mark value set with SO_MARK. iptables -t mangle -I PREROUTING -m socket --transparent \ --restore-skmark -j action iptables -t mangle -A action -m mark --mark 10 -j action2 iptables -t mangle -A action -m mark --mark 11 -j action3 Change-Id: Ica30d9303ac6bb265fce4ef095a952508b4a1f0c Signed-off-by: Harout Hedeshian <harouth@codeaurora.org> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> Git-commit: 01555e74bde51444c6898ef1800fb2bc697d479e Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git [harouth@codeaurora.org: resolve trivial merge conflicts]
* | spi-contexthub: hub now acknowledges suspend state changesAndreas Huber2015-07-161-0/+1
| | | | | | | | | | Bug: 22526125 Signed-off-by: Andreas Huber <andih@google.com>
* | netfilter: xt_socket: add XT_SOCKET_NOWILDCARD flagEric Dumazet2015-07-151-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | xt_socket module can be a nice replacement to conntrack module in some cases (SYN filtering for example) But it lacks the ability to match the 3rd packet of TCP handshake (ACK coming from the client). Add a XT_SOCKET_NOWILDCARD flag to disable the wildcard mechanism. The wildcard is the legacy socket match behavior, that ignores LISTEN sockets bound to INADDR_ANY (or ipv6 equivalent) iptables -I INPUT -p tcp --syn -j SYN_CHAIN iptables -I INPUT -m socket --nowildcard -j ACCEPT Change-Id: I5216b9c9b367cb1adbe74d47014a4155f6c39271 Signed-off-by: Eric Dumazet <edumazet@google.com> Cc: Patrick McHardy <kaber@trash.net> Cc: Jesper Dangaard Brouer <brouer@redhat.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> Signed-off-by: Harout Hedeshian <harouth@codeaurora.org>
* | arm64: ptrace: add NT_ARM_SYSTEM_CALL regsetAKASHI Takahiro2015-07-081-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This regeset is intended to be used to get and set a system call number while tracing. There was some discussion about possible approaches to do so: (1) modify x8 register with ptrace(PTRACE_SETREGSET) indirectly, and update regs->syscallno later on in syscall_trace_enter(), or (2) define a dedicated regset for this purpose as on s390, or (3) support ptrace(PTRACE_SET_SYSCALL) as on arch/arm Thinking of the fact that user_pt_regs doesn't expose 'syscallno' to tracer as well as that secure_computing() expects a changed syscall number, especially case of -1, to be visible before this function returns in syscall_trace_enter(), (1) doesn't work well. We will take (2) since it looks much cleaner. Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org> Signed-off-by: Will Deacon <will.deacon@arm.com>
* | seccomp: implement SECCOMP_FILTER_FLAG_TSYNCKees Cook2015-07-081-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Applying restrictive seccomp filter programs to large or diverse codebases often requires handling threads which may be started early in the process lifetime (e.g., by code that is linked in). While it is possible to apply permissive programs prior to process start up, it is difficult to further restrict the kernel ABI to those threads after that point. This change adds a new seccomp syscall flag to SECCOMP_SET_MODE_FILTER for synchronizing thread group seccomp filters at filter installation time. When calling seccomp(SECCOMP_SET_MODE_FILTER, SECCOMP_FILTER_FLAG_TSYNC, filter) an attempt will be made to synchronize all threads in current's threadgroup to its new seccomp filter program. This is possible iff all threads are using a filter that is an ancestor to the filter current is attempting to synchronize to. NULL filters (where the task is running as SECCOMP_MODE_NONE) are also treated as ancestors allowing threads to be transitioned into SECCOMP_MODE_FILTER. If prctrl(PR_SET_NO_NEW_PRIVS, ...) has been set on the calling thread, no_new_privs will be set for all synchronized threads too. On success, 0 is returned. On failure, the pid of one of the failing threads will be returned and no filters will have been applied. The race conditions against another thread are: - requesting TSYNC (already handled by sighand lock) - performing a clone (already handled by sighand lock) - changing its filter (already handled by sighand lock) - calling exec (handled by cred_guard_mutex) The clone case is assisted by the fact that new threads will have their seccomp state duplicated from their parent before appearing on the tasklist. Holding cred_guard_mutex means that seccomp filters cannot be assigned while in the middle of another thread's exec (potentially bypassing no_new_privs or similar). The call to de_thread() may kill threads waiting for the mutex. Changes across threads to the filter pointer includes a barrier. Based on patches by Will Drewry. Suggested-by: Julien Tinnes <jln@chromium.org> Signed-off-by: Kees Cook <keescook@chromium.org> Reviewed-by: Oleg Nesterov <oleg@redhat.com> Reviewed-by: Andy Lutomirski <luto@amacapital.net>