28 Nov, 2013

5 commits

  • Endianness issues are now consistent as per the documentation in
    host/mic_virtio.h. Sparse warnings related to endianness are also fixed.
    Note that the MIC driver implementation assumes that the host can be
    both BE or LE whereas the card is always LE.

    Reported-by: Fengguang Wu
    Reviewed-by: Sudeep Dutt
    Reviewed-by: Nikhil Rao
    Signed-off-by: Ashutosh Dixit
    Signed-off-by: Greg Kroah-Hartman

    Ashutosh Dixit
     
  • Avoid declaring ALIGN() and __aligned() in
    include/uapi/linux/mic_common.h since they pollute user space
    namespace. Also, mic_aligned_size() can be simply replaced simply by
    sizeof() since all structures where mic_aligned_size() is used are
    declared using __attribute__ ((aligned(8)));

    --
    >From mail from H Peter Anvin about this:

    On Fri, Nov 08, 2013 H Peter Anvin wrote:
    Subject: Namespace pollution in mic_common.h

    This puts two macros, ALIGN() and __aligned(), into arbitrary user space
    namespace. This really isn't safe or acceptable, especially since those
    symbols are highly generic.
    ...
    When these structures are forced-aligned, they will in fact have padding
    automatically added by the compiler to an 8-byte boundary anyway, so
    mic_aligned_size() does nothing.
    ...

    Reported-by: H Peter Anvin
    Reviewed-by: Sudeep Dutt
    Signed-off-by: Nikhil Rao
    Signed-off-by: Ashutosh Dixit
    Signed-off-by: Greg Kroah-Hartman

    Ashutosh Dixit
     
  • MIC user space daemon poll's on sysfs changes. The documentation for
    sysfs_poll(...) in fs/sysfs/file.c states that "Once poll/select
    indicates that the value has changed, you need to close and re-open the
    file, or seek to 0 and read again". This step was missed out earlier and
    resulted in the daemon spinning continuously rather than getting blocked
    in 'poll'. This bug was exposed by commit aea585ef8fa65163 introduced as
    part of sysfs changes in 3.13-rc1. A seek to 0 has been introduced to
    fix it.

    Reviewed-by: Sudeep Dutt
    Signed-off-by: Ashutosh Dixit
    Signed-off-by: Greg Kroah-Hartman

    Ashutosh Dixit
     
  • The bug would result in incorrect 'retry' value being printed in debug
    statements as well as dead code in mic_find_vqs(...) in
    drivers/misc/mic/card/mic_virtio.c.

    Reported-by: Michael Opdenacker
    Reviewed-by: Ashutosh Dixit
    Signed-off-by: Sudeep Dutt
    Signed-off-by: Greg Kroah-Hartman

    Sudeep Dutt
     
  • virtqueue_{kick()/notify()} methods are required to return bool due to
    API changes introduced in commit 5b1bf7cb673a.

    Reported-by: Fengguang Wu
    Reported-by: Geert Uytterhoeven
    Reviewed-by: Ashutosh Dixit
    Signed-off-by: Sudeep Dutt
    Signed-off-by: Greg Kroah-Hartman

    Sudeep Dutt
     

23 Nov, 2013

17 commits

  • Linus Torvalds
     
  • …ux/kernel/git/tyhicks/ecryptfs

    Pull minor eCryptfs fix from Tyler Hicks:
    "Quiet static checkers by removing unneeded conditionals"

    * tag 'ecryptfs-3.13-rc1-quiet-checkers' of git://git.kernel.org/pub/scm/linux/kernel/git/tyhicks/ecryptfs:
    eCryptfs: file->private_data is always valid

    Linus Torvalds
     
  • Pull second set of sound fixes from Takashi Iwai:
    "A collection of small fixes in HD-audio quirks and runtime PM, ASoC
    rcar, abs8500 and other codecs. Most of commits are for stable
    kernels, too"

    * tag 'sound-fix2-3.13-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
    ALSA: hda - Set current_headset_type to ALC_HEADSET_TYPE_ENUM (janitorial)
    ALSA: hda - Provide missing pin configs for VAIO with ALC260
    ALSA: hda - Add headset quirk for Dell Inspiron 3135
    ALSA: hda - Fix the headphone jack detection on Sony VAIO TX
    ALSA: hda - Fix missing bass speaker on ASUS N550
    ALSA: hda - Fix unbalanced runtime PM notification at resume
    ASoC: arizona: Set FLL to free-run before disabling
    ALSA: hda - A casual Dell Headset quirk
    ASoC: rcar: fixup dma_async_issue_pending() timing
    ASoC: rcar: off by one in rsnd_scu_set_route()
    ASoC: wm5110: Add post SYSCLK register patch for rev D chip
    ASoC: ab8500: Revert to using custom I/O functions
    ALSA: hda - Also enable mute/micmute LED control for "Lenovo dock" fixup
    ALSA: firewire-lib: include sound/asound.h to refer to snd_pcm_format_t
    ALSA: hda - Select FW_LOADER from CONFIG_SND_HDA_CODEC_CA0132_DSP
    ALSA: hda - Enable mute/mic-mute LEDs for more Thinkpads with Realtek codec
    ASoC: rcar: fixup mod access before checking

    Linus Torvalds
     
  • Pull DRM fixes from Dave Airlie:
    "I was going to leave this until post -rc1 but sysfs fixes broke
    hotplug in userspace, so I had to fix it harder, otherwise a set of
    pulls from intel, radeon and vmware,

    The vmware/ttm changes are bit larger but since its early and they are
    unlikely to break anything else I put them in, it lets vmware work
    with dri3"

    * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux: (36 commits)
    drm/sysfs: fix hotplug regression since lifetime changes
    drm/exynos: g2d: fix memory leak to userptr
    drm/i915: Fix gen3 self-refresh watermarks
    drm/ttm: Remove set_need_resched from the ttm fault handler
    drm/ttm: Don't move non-existing data
    drm/radeon: hook up backlight functions for CI and KV family.
    drm/i915: Replicate BIOS eDP bpp clamping hack for hsw
    drm/i915: Do not enable package C8 on unsupported hardware
    drm/i915: Hold pc8 lock around toggling pc8.gpu_idle
    drm/i915: encoder->get_config is no longer optional
    drm/i915/tv: add ->get_config callback
    drm/radeon/cik: Add macrotile mode array query
    drm/radeon/cik: Return backend map information to userspace
    drm/vmwgfx: Make vmwgfx dma buffers prime aware
    drm/vmwgfx: Make surfaces prime-aware
    drm/vmwgfx: Hook up the prime ioctls
    drm/ttm: Add a minimal prime implementation for ttm base objects
    drm/vmwgfx: Fix false lockdep warning
    drm/ttm: Allow execbuf util reserves without ticket
    drm/i915: restore the early forcewake cleanup
    ...

    Linus Torvalds
     
  • Pull PCI updates from Bjorn Helgaas:
    "Miscellaneous
    - Remove duplicate disable from pcie_portdrv_remove() (Yinghai Lu)
    - Fix whitespace, capitalization, and spelling errors (Bjorn Helgaas)"

    * tag 'pci-v3.13-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci:
    PCI: Remove duplicate pci_disable_device() from pcie_portdrv_remove()
    PCI: Fix whitespace, capitalization, and spelling errors

    Linus Torvalds
     
  • Pull SCSI target updates from Nicholas Bellinger:
    "Things have been quiet this round with mostly bugfixes, percpu
    conversions, and other minor iscsi-target conformance testing changes.

    The highlights include:

    - Add demo_mode_discovery attribute for iscsi-target (Thomas)
    - Convert tcm_fc(FCoE) to use percpu-ida pre-allocation
    - Add send completion interrupt coalescing for ib_isert
    - Convert target-core to use percpu-refcounting for se_lun
    - Fix mutex_trylock usage bug in iscsit_increment_maxcmdsn
    - tcm_loop updates (Hannes)
    - target-core ALUA cleanups + prep for v3.14 SCSI Referrals support (Hannes)

    v3.14 is currently shaping to be a busy development cycle in target
    land, with initial support for T10 Referrals and T10 DIF currently on
    the roadmap"

    * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending: (40 commits)
    iscsi-target: chap auth shouldn't match username with trailing garbage
    iscsi-target: fix extract_param to handle buffer length corner case
    iscsi-target: Expose default_erl as TPG attribute
    target_core_configfs: split up ALUA supported states
    target_core_alua: Make supported states configurable
    target_core_alua: Store supported ALUA states
    target_core_alua: Rename ALUA_ACCESS_STATE_OPTIMIZED
    target_core_alua: spellcheck
    target core: rename (ex,im)plict -> (ex,im)plicit
    percpu-refcount: Add percpu-refcount.o to obj-y
    iscsi-target: Do not reject non-immediate CmdSNs exceeding MaxCmdSN
    iscsi-target: Convert iscsi_session statistics to atomic_long_t
    target: Convert se_device statistics to atomic_long_t
    target: Fix delayed Task Aborted Status (TAS) handling bug
    iscsi-target: Reject unsupported multi PDU text command sequence
    ib_isert: Avoid duplicate iscsit_increment_maxcmdsn call
    iscsi-target: Fix mutex_trylock usage in iscsit_increment_maxcmdsn
    target: Core does not need blkdev.h
    target: Pass through I/O topology for block backstores
    iser-target: Avoid using FRMR for single dma entry requests
    ...

    Linus Torvalds
     
  • Pull hwmon fixes from Guenter Roeck:
    - acpi_power_meter: Fix return value check from call to
    acpi_bus_get_device
    - nct6775: Fix/improve NCT6791 support
    - lm75: Add support for GMT G751

    * tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
    hwmon: (acpi_power_meter) Fix acpi_bus_get_device() return value check
    hwmon: (nct6775) NCT6791 supports weight control only for CPUFAN
    hwmon: (nct6775) Monitor additional temperature registers
    hwmon: (lm75) Add support for GMT G751 chip

    Linus Torvalds
     
  • Pull networking fixes from David Miller:

    1) Fix memory leaks and other issues in mwifiex driver, from Amitkumar
    Karwar.

    2) skb_segment() can choke on packets using frag lists, fix from
    Herbert Xu with help from Eric Dumazet and others.

    3) IPv4 output cached route instantiation properly handles races
    involving two threads trying to install the same route, but we
    forgot to propagate this logic to input routes as well. Fix from
    Alexei Starovoitov.

    4) Put protections in place to make sure that recvmsg() paths never
    accidently copy uninitialized memory back into userspace and also
    make sure that we never try to use more that sockaddr_storage for
    building the on-kernel-stack copy of a sockaddr. Fixes from Hannes
    Frederic Sowa.

    5) R8152 driver transmit flow bug fixes from Hayes Wang.

    6) Fix some minor fallouts from genetlink changes, from Johannes Berg
    and Michael Opdenacker.

    7) AF_PACKET sendmsg path can race with netdevice unregister notifier,
    fix by using RCU to make sure the network device doesn't go away
    from under us. Fix from Daniel Borkmann.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (43 commits)
    gso: handle new frag_list of frags GRO packets
    genetlink: fix genl_set_err() group ID
    genetlink: fix genlmsg_multicast() bug
    packet: fix use after free race in send path when dev is released
    xen-netback: stop the VIF thread before unbinding IRQs
    wimax: remove dead code
    net/phy: Add the autocross feature for forced links on VSC82x4
    net/phy: Add VSC8662 support
    net/phy: Add VSC8574 support
    net/phy: Add VSC8234 support
    net: add BUG_ON if kernel advertises msg_namelen > sizeof(struct sockaddr_storage)
    net: rework recvmsg handler msg_name and msg_namelen logic
    bridge: flush br's address entry in fdb when remove the
    net: core: Always propagate flag changes to interfaces
    ipv4: fix race in concurrent ip_route_input_slow()
    r8152: fix incorrect type in assignment
    r8152: support stopping/waking tx queue
    r8152: modify the tx flow
    r8152: fix tx/rx memory overflow
    netfilter: ebt_ip6: fix source and destination matching
    ...

    Linus Torvalds
     
  • Pull ARM fixes from Russell King:
    "Some small fixes for this merge window, most of them quite self
    explanatory - the biggest thing here is a fix for the ARMv7 LPAE
    suspend/resume support"

    * 'fixes' of git://git.linaro.org/people/rmk/linux-arm:
    ARM: 7894/1: kconfig: select GENERIC_CLOCKEVENTS if HAVE_ARM_ARCH_TIMER
    ARM: 7893/1: bitops: only emit .arch_extension mp if CONFIG_SMP
    ARM: 7892/1: Fix warning for V7M builds
    ARM: 7888/1: seccomp: not compatible with ARM OABI
    ARM: 7886/1: make OABI default to off
    ARM: 7885/1: Save/Restore 64-bit TTBR registers on LPAE suspend/resume
    ARM: 7884/1: mm: Fix ECC mem policy printk
    ARM: 7883/1: fix mov to mvn conversion in case of 64 bit phys_addr_t and BE
    ARM: 7882/1: mm: fix __phys_to_virt to work with 64 bit phys_addr_t in BE case
    ARM: 7881/1: __fixup_smp read of SCU config should do byteswap in BE case
    ARM: Fix nommu.c build warning

    Linus Torvalds
     
  • Pull KVM fixes from Gleb Natapov.

    * 'next' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
    KVM: kvm_clear_guest_page(): fix empty_zero_page usage
    kvm: mmu: delay mmu audit activation
    arm/arm64: KVM: Fix hyp mappings of vmalloc regions

    Linus Torvalds
     
  • Pull aio fixes from Benjamin LaHaise.

    * git://git.kvack.org/~bcrl/aio-next:
    aio: nullify aio->ring_pages after freeing it
    aio: prevent double free in ioctx_alloc
    aio: Fix a trinity splat

    Linus Torvalds
     
  • Pull nfsd bugfixes from Bruce Fields:
    "A couple nfsd bugfixes"

    * 'for-3.13' of git://linux-nfs.org/~bfields/linux:
    nfsd4: fix xdr decoding of large non-write compounds
    nfsd: make sure to balance get/put_write_access
    nfsd: split up nfsd_setattr

    Linus Torvalds
     
  • Pull GFS2 fixes from Steven Whitehouse:
    "A couple of small, but important bug fixes for GFS2. The first one
    fixes a possible NULL pointer dereference, and the second one resolves
    a reference counting issue in one of the lesser used paths through
    atomic_open"

    * tag 'gfs2-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-fixes:
    GFS2: Fix ref count bug relating to atomic_open
    GFS2: fix potential NULL pointer dereference

    Linus Torvalds
     
  • Pull btrfs fixes from Chris Mason:
    "Almost all of these are bug fixes. Dave Sterba's documentation update
    is the big exception because he removed our promises to set any
    machine running Btrfs on fire"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
    Documentation: filesystems: update btrfs tools section
    Documentation: filesystems: add new btrfs mount options
    btrfs: update kconfig help text
    btrfs: fix bio_size_ok() for max_sectors > 0xffff
    btrfs: Use trace condition for get_extent tracepoint
    btrfs: fix typo in the log message
    Btrfs: fix list delete warning when removing ordered root from the list
    Btrfs: print bytenr instead of page pointer in check-int
    Btrfs: remove dead codes from ctree.h
    Btrfs: don't wait for ordered data outside desired range
    Btrfs: fix lockdep error in async commit
    Btrfs: avoid heavy operations in btrfs_commit_super
    Btrfs: fix __btrfs_start_workers retval
    Btrfs: disable online raid-repair on ro mounts
    Btrfs: do not inc uncorrectable_errors counter on ro scrubs
    Btrfs: only drop modified extents if we logged the whole inode
    Btrfs: make sure to copy everything if we rename
    Btrfs: don't BUG_ON() if we get an error walking backrefs

    Linus Torvalds
     
  • Pull second xfs update from Ben Myers:
    "There are a couple of patches that I wasn't quite sure about in time
    for our initial 3.13 pull request, a bugfix, and an update to add Dave
    to MAINTAINERS:

    Here we have a performance fix for inode iversion, increased inode
    cluster size for v5 superblock filesystems, a fix for error handling
    in xfs_bmap_add_attrfork, and a MAINTAINERS update to add Dave"

    * tag 'xfs-for-linus-v3.13-rc1-2' of git://oss.sgi.com/xfs/xfs:
    xfs: open code inc_inode_iversion when logging an inode
    xfs: increase inode cluster size for v5 filesystems
    xfs: fix unlock in xfs_bmap_add_attrfork
    xfs: update maintainers

    Linus Torvalds
     
  • Pull SLAB changes from Pekka Enberg:
    "The patches from Joonsoo Kim switch mm/slab.c to use 'struct page' for
    slab internals similar to mm/slub.c. This reduces memory usage and
    improves performance:

    https://lkml.org/lkml/2013/10/16/155

    Rest of the changes are bug fixes from various people"

    * 'slab/next' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/linux: (21 commits)
    mm, slub: fix the typo in mm/slub.c
    mm, slub: fix the typo in include/linux/slub_def.h
    slub: Handle NULL parameter in kmem_cache_flags
    slab: replace non-existing 'struct freelist *' with 'void *'
    slab: fix to calm down kmemleak warning
    slub: proper kmemleak tracking if CONFIG_SLUB_DEBUG disabled
    slab: rename slab_bufctl to slab_freelist
    slab: remove useless statement for checking pfmemalloc
    slab: use struct page for slab management
    slab: replace free and inuse in struct slab with newly introduced active
    slab: remove SLAB_LIMIT
    slab: remove kmem_bufctl_t
    slab: change the management method of free objects of the slab
    slab: use __GFP_COMP flag for allocating slab pages
    slab: use well-defined macro, virt_to_slab()
    slab: overloading the RCU head over the LRU for RCU free
    slab: remove cachep in struct slab_rcu
    slab: remove nodeid in struct slab
    slab: remove colouroff in struct slab
    slab: change return type of kmem_getpages() to struct page
    ...

    Linus Torvalds
     
  • Pull third set of powerpc updates from Benjamin Herrenschmidt:
    "This is a small collection of random bug fixes and a few improvements
    of Oops output which I deemed valuable enough to include as well.

    The fixes are essentially recent build breakage and regressions, and a
    couple of older bugs such as the DTL log duplication, the EEH issue
    with PCI_COMMAND_MASTER and the problem with small contexts passed to
    get/set_context with VSX enabled"

    * 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
    powerpc/signals: Mark VSX not saved with small contexts
    powerpc/pseries: Fix SMP=n build of rng.c
    powerpc: Make cpu_to_chip_id() available when SMP=n
    powerpc/vio: Fix a dma_mask issue of vio
    powerpc: booke: Fix build failures
    powerpc: ppc64 address space capped at 32TB, mmap randomisation disabled
    powerpc: Only print PACATMSCRATCH in oops when TM is active
    powerpc/pseries: Duplicate dtl entries sometimes sent to userspace
    powerpc: Remove a few lines of oops output
    powerpc: Print DAR and DSISR on machine check oopses
    powerpc: Fix __get_user_pages_fast() irq handling
    powerpc/eeh: More accurate log
    powerpc/eeh: Enable PCI_COMMAND_MASTER for PCI bridges

    Linus Torvalds
     

22 Nov, 2013

18 commits

  • current_headset_type should be of the HEADSET_TYPE enum, not the
    HEADSET_MODE enum. Since ALC_HEADSET_TYPE_UNKNOWN and ALC_HEADSET_MODE_UNKNOWN
    are both 0, this patch is just janitorial.

    Signed-off-by: David Henningsson
    Signed-off-by: Takashi Iwai

    David Henningsson
     
  • Some models (or maybe depending on BIOS version) of Sony VAIO with
    ALC260 give no proper pin configurations as default, resulting in the
    non-working speaker, etc. Just provide the whole pin configurations
    via a fixup.

    Reported-by: Matthew Markus
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • Merge patches from Andrew Morton:
    "13 fixes"

    * emailed patches from Andrew Morton :
    mm: place page->pmd_huge_pte to right union
    MAINTAINERS: add keyboard driver to Hyper-V file list
    x86, mm: do not leak page->ptl for pmd page tables
    ipc,shm: correct error return value in shmctl (SHM_UNLOCK)
    mm, mempolicy: silence gcc warning
    block/partitions/efi.c: fix bound check
    ARM: drivers/rtc/rtc-at91rm9200.c: disable interrupts at shutdown
    mm: hugetlbfs: fix hugetlbfs optimization
    kernel: remove CONFIG_USE_GENERIC_SMP_HELPERS cleanly
    ipc,shm: fix shm_file deletion races
    mm: thp: give transparent hugepage code a separate copy_page
    checkpatch: fix "Use of uninitialized value" warnings
    configfs: fix race between dentry put and lookup

    Linus Torvalds
     
  • Pull security subsystem updates from James Morris:
    "In this patchset, we finally get an SELinux update, with Paul Moore
    taking over as maintainer of that code.

    Also a significant update for the Keys subsystem, as well as
    maintenance updates to Smack, IMA, TPM, and Apparmor"

    and since I wanted to know more about the updates to key handling,
    here's the explanation from David Howells on that:

    "Okay. There are a number of separate bits. I'll go over the big bits
    and the odd important other bit, most of the smaller bits are just
    fixes and cleanups. If you want the small bits accounting for, I can
    do that too.

    (1) Keyring capacity expansion.

    KEYS: Consolidate the concept of an 'index key' for key access
    KEYS: Introduce a search context structure
    KEYS: Search for auth-key by name rather than target key ID
    Add a generic associative array implementation.
    KEYS: Expand the capacity of a keyring

    Several of the patches are providing an expansion of the capacity of a
    keyring. Currently, the maximum size of a keyring payload is one page.
    Subtract a small header and then divide up into pointers, that only gives
    you ~500 pointers on an x86_64 box. However, since the NFS idmapper uses
    a keyring to store ID mapping data, that has proven to be insufficient to
    the cause.

    Whatever data structure I use to handle the keyring payload, it can only
    store pointers to keys, not the keys themselves because several keyrings
    may point to a single key. This precludes inserting, say, and rb_node
    struct into the key struct for this purpose.

    I could make an rbtree of records such that each record has an rb_node
    and a key pointer, but that would use four words of space per key stored
    in the keyring. It would, however, be able to use much existing code.

    I selected instead a non-rebalancing radix-tree type approach as that
    could have a better space-used/key-pointer ratio. I could have used the
    radix tree implementation that we already have and insert keys into it by
    their serial numbers, but that means any sort of search must iterate over
    the whole radix tree. Further, its nodes are a bit on the capacious side
    for what I want - especially given that key serial numbers are randomly
    allocated, thus leaving a lot of empty space in the tree.

    So what I have is an associative array that internally is a radix-tree
    with 16 pointers per node where the index key is constructed from the key
    type pointer and the key description. This means that an exact lookup by
    type+description is very fast as this tells us how to navigate directly to
    the target key.

    I made the data structure general in lib/assoc_array.c as far as it is
    concerned, its index key is just a sequence of bits that leads to a
    pointer. It's possible that someone else will be able to make use of it
    also. FS-Cache might, for example.

    (2) Mark keys as 'trusted' and keyrings as 'trusted only'.

    KEYS: verify a certificate is signed by a 'trusted' key
    KEYS: Make the system 'trusted' keyring viewable by userspace
    KEYS: Add a 'trusted' flag and a 'trusted only' flag
    KEYS: Separate the kernel signature checking keyring from module signing

    These patches allow keys carrying asymmetric public keys to be marked as
    being 'trusted' and allow keyrings to be marked as only permitting the
    addition or linkage of trusted keys.

    Keys loaded from hardware during kernel boot or compiled into the kernel
    during build are marked as being trusted automatically. New keys can be
    loaded at runtime with add_key(). They are checked against the system
    keyring contents and if their signatures can be validated with keys that
    are already marked trusted, then they are marked trusted also and can
    thus be added into the master keyring.

    Patches from Mimi Zohar make this usable with the IMA keyrings also.

    (3) Remove the date checks on the key used to validate a module signature.

    X.509: Remove certificate date checks

    It's not reasonable to reject a signature just because the key that it was
    generated with is no longer valid datewise - especially if the kernel
    hasn't yet managed to set the system clock when the first module is
    loaded - so just remove those checks.

    (4) Make it simpler to deal with additional X.509 being loaded into the kernel.

    KEYS: Load *.x509 files into kernel keyring
    KEYS: Have make canonicalise the paths of the X.509 certs better to deduplicate

    The builder of the kernel now just places files with the extension ".x509"
    into the kernel source or build trees and they're concatenated by the
    kernel build and stuffed into the appropriate section.

    (5) Add support for userspace kerberos to use keyrings.

    KEYS: Add per-user_namespace registers for persistent per-UID kerberos caches
    KEYS: Implement a big key type that can save to tmpfs

    Fedora went to, by default, storing kerberos tickets and tokens in tmpfs.
    We looked at storing it in keyrings instead as that confers certain
    advantages such as tickets being automatically deleted after a certain
    amount of time and the ability for the kernel to get at these tokens more
    easily.

    To make this work, two things were needed:

    (a) A way for the tickets to persist beyond the lifetime of all a user's
    sessions so that cron-driven processes can still use them.

    The problem is that a user's session keyrings are deleted when the
    session that spawned them logs out and the user's user keyring is
    deleted when the UID is deleted (typically when the last log out
    happens), so neither of these places is suitable.

    I've added a system keyring into which a 'persistent' keyring is
    created for each UID on request. Each time a user requests their
    persistent keyring, the expiry time on it is set anew. If the user
    doesn't ask for it for, say, three days, the keyring is automatically
    expired and garbage collected using the existing gc. All the kerberos
    tokens it held are then also gc'd.

    (b) A key type that can hold really big tickets (up to 1MB in size).

    The problem is that Active Directory can return huge tickets with lots
    of auxiliary data attached. We don't, however, want to eat up huge
    tracts of unswappable kernel space for this, so if the ticket is
    greater than a certain size, we create a swappable shmem file and dump
    the contents in there and just live with the fact we then have an
    inode and a dentry overhead. If the ticket is smaller than that, we
    slap it in a kmalloc()'d buffer"

    * 'for-linus2' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security: (121 commits)
    KEYS: Fix keyring content gc scanner
    KEYS: Fix error handling in big_key instantiation
    KEYS: Fix UID check in keyctl_get_persistent()
    KEYS: The RSA public key algorithm needs to select MPILIB
    ima: define '_ima' as a builtin 'trusted' keyring
    ima: extend the measurement list to include the file signature
    kernel/system_certificate.S: use real contents instead of macro GLOBAL()
    KEYS: fix error return code in big_key_instantiate()
    KEYS: Fix keyring quota misaccounting on key replacement and unlink
    KEYS: Fix a race between negating a key and reading the error set
    KEYS: Make BIG_KEYS boolean
    apparmor: remove the "task" arg from may_change_ptraced_domain()
    apparmor: remove parent task info from audit logging
    apparmor: remove tsk field from the apparmor_audit_struct
    apparmor: fix capability to not use the current task, during reporting
    Smack: Ptrace access check mode
    ima: provide hash algo info in the xattr
    ima: enable support for larger default filedata hash algorithms
    ima: define kernel parameter 'ima_template=' to change configured default
    ima: add Kconfig default measurement list template
    ...

    Linus Torvalds
     
  • Pull audit updates from Eric Paris:
    "Nothing amazing. Formatting, small bug fixes, couple of fixes where
    we didn't get records due to some old VFS changes, and a change to how
    we collect execve info..."

    Fixed conflict in fs/exec.c as per Eric and linux-next.

    * git://git.infradead.org/users/eparis/audit: (28 commits)
    audit: fix type of sessionid in audit_set_loginuid()
    audit: call audit_bprm() only once to add AUDIT_EXECVE information
    audit: move audit_aux_data_execve contents into audit_context union
    audit: remove unused envc member of audit_aux_data_execve
    audit: Kill the unused struct audit_aux_data_capset
    audit: do not reject all AUDIT_INODE filter types
    audit: suppress stock memalloc failure warnings since already managed
    audit: log the audit_names record type
    audit: add child record before the create to handle case where create fails
    audit: use given values in tty_audit enable api
    audit: use nlmsg_len() to get message payload length
    audit: use memset instead of trying to initialize field by field
    audit: fix info leak in AUDIT_GET requests
    audit: update AUDIT_INODE filter rule to comparator function
    audit: audit feature to set loginuid immutable
    audit: audit feature to only allow unsetting the loginuid
    audit: allow unsetting the loginuid (with priv)
    audit: remove CONFIG_AUDIT_LOGINUID_IMMUTABLE
    audit: loginuid functions coding style
    selinux: apply selinux checks on new audit message types
    ...

    Linus Torvalds
     
  • I don't know what went wrong, mis-merge or something, but ->pmd_huge_pte
    placed in wrong union within struct page.

    In original patch[1] it's placed to union with ->lru and ->slab, but in
    commit e009bb30c8df ("mm: implement split page table lock for PMD
    level") it's in union with ->index and ->freelist.

    That union seems also unused for pages with table tables and safe to
    re-use, but it's not what I've tested.

    Let's move it to original place. It fixes indentation at least. :)

    [1] https://lkml.org/lkml/2013/10/7/288

    Signed-off-by: Kirill A. Shutemov
    Reviewed-by: Naoya Horiguchi
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kirill A. Shutemov
     
  • Signed-off-by: Haiyang Zhang
    Cc: Dmitry Torokhov
    Cc: "K. Y. Srinivasan"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Haiyang Zhang
     
  • There are two code paths how page with pmd page table can be freed:
    pmd_free() and pmd_free_tlb().

    I've missed the second one and didn't add page table destructor call
    there. It leads to leak of page->ptl for pmd page tables, if
    dynamically allocated page->ptl is in use.

    The patch adds the missed destructor and modifies documentation
    accordingly.

    Signed-off-by: Kirill A. Shutemov
    Reported-by: Andrey Vagin
    Tested-by: Andrey Vagin
    Cc: Ingo Molnar
    Cc: Peter Zijlstra
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kirill A. Shutemov
     
  • Commit 2caacaa82a51 ("ipc,shm: shorten critical region for shmctl")
    restructured the ipc shm to shorten critical region, but introduced a
    path where the return value could be -EPERM, even if the operation
    actually was performed.

    Before the commit, the err return value was reset by the return value
    from security_shm_shmctl() after the if (!ns_capable(...)) statement.

    Now, we still exit the if statement with err set to -EPERM, and in the
    case of SHM_UNLOCK, it is not reset at all, and used as the return value
    from shmctl.

    To fix this, we only set err when errors occur, leaving the fallthrough
    case alone.

    Signed-off-by: Jesper Nilsson
    Cc: Davidlohr Bueso
    Cc: Rik van Riel
    Cc: Michel Lespinasse
    Cc: Al Viro
    Cc: [3.12.x]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jesper Nilsson
     
  • Fengguang Wu reports that compiling mm/mempolicy.c results in a warning:

    mm/mempolicy.c: In function 'mpol_to_str':
    mm/mempolicy.c:2878:2: error: format not a string literal and no format arguments

    Kees says this is because he is using -Wformat-security.

    Silence the warning.

    Signed-off-by: David Rientjes
    Reported-by: Fengguang Wu
    Suggested-by: Kees Cook
    Acked-by: Kees Cook
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Rientjes
     
  • Use ARRAY_SIZE instead of sizeof to get proper max for label length.

    Since this is just a read out of bounds it's not that bad, but the
    problem becomes user-visible eg if one tries to use DEBUG_PAGEALLOC and
    DEBUG_RODATA, at least with some enhancements from Hiroshi. Of course
    the destination array can contain garbage when we read beyond the end of
    source array so that would be another user-visible problem.

    Signed-off-by: Antti P Miettinen
    Reviewed-by: Hiroshi Doyu
    Tested-by: Hiroshi Doyu
    Cc: Will Drewry
    Cc: Matt Fleming
    Acked-by: Davidlohr Bueso
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antti P Miettinen
     
  • Make sure RTC-interrupts are disabled at shutdown.

    As the RTC is generally powered by backup power (VDDBU), its interrupts
    are not disabled on wake-up, user, watchdog or software reset. This
    could cause troubles on other systems (e.g. older kernels) if an
    interrupt occurs before a handler has been installed at next boot.

    Let us be well-behaved and disable them on clean shutdowns at least (as
    do the RTT-based rtc-at91sam9 driver).

    Signed-off-by: Johan Hovold
    Acked-by: Nicolas Ferre
    Cc: Jean-Christophe Plagniol-Villard
    Cc: Andrew Victor
    Cc: Alessandro Zummo
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Johan Hovold
     
  • Commit 7cb2ef56e6a8 ("mm: fix aio performance regression for database
    caused by THP") can cause dereference of a dangling pointer if
    split_huge_page runs during PageHuge() if there are updates to the
    tail_page->private field.

    Also it is repeating compound_head twice for hugetlbfs and it is running
    compound_head+compound_trans_head for THP when a single one is needed in
    both cases.

    The new code within the PageSlab() check doesn't need to verify that the
    THP page size is never bigger than the smallest hugetlbfs page size, to
    avoid memory corruption.

    A longstanding theoretical race condition was found while fixing the
    above (see the change right after the skip_unlock label, that is
    relevant for the compound_lock path too).

    By re-establishing the _mapcount tail refcounting for all compound
    pages, this also fixes the below problem:

    echo 0 >/sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages

    BUG: Bad page state in process bash pfn:59a01
    page:ffffea000139b038 count:0 mapcount:10 mapping: (null) index:0x0
    page flags: 0x1c00000000008000(tail)
    Modules linked in:
    CPU: 6 PID: 2018 Comm: bash Not tainted 3.12.0+ #25
    Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
    Call Trace:
    dump_stack+0x55/0x76
    bad_page+0xd5/0x130
    free_pages_prepare+0x213/0x280
    __free_pages+0x36/0x80
    update_and_free_page+0xc1/0xd0
    free_pool_huge_page+0xc2/0xe0
    set_max_huge_pages.part.58+0x14c/0x220
    nr_hugepages_store_common.isra.60+0xd0/0xf0
    nr_hugepages_store+0x13/0x20
    kobj_attr_store+0xf/0x20
    sysfs_write_file+0x189/0x1e0
    vfs_write+0xc5/0x1f0
    SyS_write+0x55/0xb0
    system_call_fastpath+0x16/0x1b

    Signed-off-by: Khalid Aziz
    Signed-off-by: Andrea Arcangeli
    Tested-by: Khalid Aziz
    Cc: Pravin Shelar
    Cc: Greg Kroah-Hartman
    Cc: Ben Hutchings
    Cc: Christoph Lameter
    Cc: Johannes Weiner
    Cc: Mel Gorman
    Cc: Rik van Riel
    Cc: Andi Kleen
    Cc: Minchan Kim
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrea Arcangeli
     
  • Remove CONFIG_USE_GENERIC_SMP_HELPERS left by commit 0a06ff068f12
    ("kernel: remove CONFIG_USE_GENERIC_SMP_HELPERS").

    Signed-off-by: Yuanhan Liu
    Cc: Christoph Hellwig
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yuanhan Liu
     
  • When IPC_RMID races with other shm operations there's potential for
    use-after-free of the shm object's associated file (shm_file).

    Here's the race before this patch:

    TASK 1 TASK 2
    ------ ------
    shm_rmid()
    ipc_lock_object()
    shmctl()
    shp = shm_obtain_object_check()

    shm_destroy()
    shum_unlock()
    fput(shp->shm_file)
    ipc_lock_object()
    shmem_lock(shp->shm_file)

    The oops is caused because shm_destroy() calls fput() after dropping the
    ipc_lock. fput() clears the file's f_inode, f_path.dentry, and
    f_path.mnt, which causes various NULL pointer references in task 2. I
    reliably see the oops in task 2 if with shmlock, shmu

    This patch fixes the races by:
    1) set shm_file=NULL in shm_destroy() while holding ipc_object_lock().
    2) modify at risk operations to check shm_file while holding
    ipc_object_lock().

    Example workloads, which each trigger oops...

    Workload 1:
    while true; do
    id=$(shmget 1 4096)
    shm_rmid $id &
    shmlock $id &
    wait
    done

    The oops stack shows accessing NULL f_inode due to racing fput:
    _raw_spin_lock
    shmem_lock
    SyS_shmctl

    Workload 2:
    while true; do
    id=$(shmget 1 4096)
    shmat $id 4096 &
    shm_rmid $id &
    wait
    done

    The oops stack is similar to workload 1 due to NULL f_inode:
    touch_atime
    shmem_mmap
    shm_mmap
    mmap_region
    do_mmap_pgoff
    do_shmat
    SyS_shmat

    Workload 3:
    while true; do
    id=$(shmget 1 4096)
    shmlock $id
    shm_rmid $id &
    shmunlock $id &
    wait
    done

    The oops stack shows second fput tripping on an NULL f_inode. The
    first fput() completed via from shm_destroy(), but a racing thread did
    a get_file() and queued this fput():
    locks_remove_flock
    __fput
    ____fput
    task_work_run
    do_notify_resume
    int_signal

    Fixes: c2c737a0461e ("ipc,shm: shorten critical region for shmat")
    Fixes: 2caacaa82a51 ("ipc,shm: shorten critical region for shmctl")
    Signed-off-by: Greg Thelen
    Cc: Davidlohr Bueso
    Cc: Rik van Riel
    Cc: Manfred Spraul
    Cc: # 3.10.17+ 3.11.6+
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Greg Thelen
     
  • Right now, the migration code in migrate_page_copy() uses copy_huge_page()
    for hugetlbfs and thp pages:

    if (PageHuge(page) || PageTransHuge(page))
    copy_huge_page(newpage, page);

    So, yay for code reuse. But:

    void copy_huge_page(struct page *dst, struct page *src)
    {
    struct hstate *h = page_hstate(src);

    and a non-hugetlbfs page has no page_hstate(). This works 99% of the
    time because page_hstate() determines the hstate from the page order
    alone. Since the page order of a THP page matches the default hugetlbfs
    page order, it works.

    But, if you change the default huge page size on the boot command-line
    (say default_hugepagesz=1G), then we might not even *have* a 2MB hstate
    so page_hstate() returns null and copy_huge_page() oopses pretty fast
    since copy_huge_page() dereferences the hstate:

    void copy_huge_page(struct page *dst, struct page *src)
    {
    struct hstate *h = page_hstate(src);
    if (unlikely(pages_per_huge_page(h) > MAX_ORDER_NR_PAGES)) {
    ...

    Mel noticed that the migration code is really the only user of these
    functions. This moves all the copy code over to migrate.c and makes
    copy_huge_page() work for THP by checking for it explicitly.

    I believe the bug was introduced in commit b32967ff101a ("mm: numa: Add
    THP migration for the NUMA working set scanning fault case")

    [akpm@linux-foundation.org: fix coding-style and comment text, per Naoya Horiguchi]
    Signed-off-by: Dave Hansen
    Acked-by: Mel Gorman
    Reviewed-by: Naoya Horiguchi
    Cc: Hillf Danton
    Cc: Andrea Arcangeli
    Tested-by: Dave Jiang
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dave Hansen
     
  • checkpatch is currently confused about some complex macros and references
    undefined variables $stat and $cond.

    Make sure these are defined before using them.

    Signed-off-by: Joe Perches
    Reported-by: Gerhard Sittig
    Acked-by: Andy Whitcroft
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • A race window in configfs, it starts from one dentry is UNHASHED and end
    before configfs_d_iput is called. In this window, if a lookup happen,
    since the original dentry was UNHASHED, so a new dentry will be
    allocated, and then in configfs_attach_attr(), sd->s_dentry will be
    updated to the new dentry. Then in configfs_d_iput(),
    BUG_ON(sd->s_dentry != dentry) will be triggered and system panic.

    sys_open: sys_close:
    ... fput
    dput
    dentry_kill
    __d_drop dentry still point
    to this dentry.

    lookup_real
    configfs_lookup
    configfs_attach_attr---> update sd->s_dentry
    to new allocated dentry here.

    d_kill
    configfs_d_iput s_dentry != dentry)
    triggered here.

    To fix it, change configfs_d_iput to not update sd->s_dentry if
    sd->s_count > 2, that means there are another dentry is using the sd
    beside the one that is going to be put. Use configfs_dirent_lock in
    configfs_attach_attr to sync with configfs_d_iput.

    With the following steps, you can reproduce the bug.

    1. enable ocfs2, this will mount configfs at /sys/kernel/config and
    fill configure in it.

    2. run the following script.
    while [ 1 ]; do cat /sys/kernel/config/cluster/$your_cluster_name/idle_timeout_ms > /dev/null; done &
    while [ 1 ]; do cat /sys/kernel/config/cluster/$your_cluster_name/idle_timeout_ms > /dev/null; done &

    Signed-off-by: Junxiao Bi
    Cc: Joel Becker
    Cc: Al Viro
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Junxiao Bi