28 Sep, 2016

4 commits

  • CURRENT_TIME_SEC is not y2038 safe. current_time() will
    be transitioned to use 64 bit time along with vfs in a
    separate patch.
    There is no plan to transistion CURRENT_TIME_SEC to use
    y2038 safe time interfaces.

    current_time() will also be extended to use superblock
    range checking parameters when range checking is introduced.

    This works because alloc_super() fills in the the s_time_gran
    in super block to NSEC_PER_SEC.

    Signed-off-by: Deepa Dinamani
    Acked-by: Jan Kara
    Signed-off-by: Al Viro

    Deepa Dinamani
     
  • CURRENT_TIME macro is not appropriate for filesystems as it
    doesn't use the right granularity for filesystem timestamps.
    Use current_time() instead.

    CURRENT_TIME is also not y2038 safe.

    This is also in preparation for the patch that transitions
    vfs timestamps to use 64 bit time and hence make them
    y2038 safe. As part of the effort current_time() will be
    extended to do range checks. Hence, it is necessary for all
    file system timestamps to use current_time(). Also,
    current_time() will be transitioned along with vfs to be
    y2038 safe.

    Note that whenever a single call to current_time() is used
    to change timestamps in different inodes, it is because they
    share the same time granularity.

    Signed-off-by: Deepa Dinamani
    Reviewed-by: Arnd Bergmann
    Acked-by: Felipe Balbi
    Acked-by: Steven Whitehouse
    Acked-by: Ryusuke Konishi
    Acked-by: David Sterba
    Signed-off-by: Al Viro

    Deepa Dinamani
     
  • proc uses new_inode_pseudo() to allocate a new inode.
    This in turn calls the proc_inode_alloc() callback.
    But, at this point, inode is still not initialized
    with the super_block pointer which only happens just
    before alloc_inode() returns after the call to
    inode_init_always().

    Also, the inode times are initialized again after the
    call to new_inode_pseudo() in proc_inode_alloc().
    The assignemet in proc_alloc_inode() is redundant and
    also doesn't work after the current_time() api is
    changed to take struct inode* instead of
    struct *super_block.

    This bug was reported after current_time() was used to
    assign times in proc_alloc_inode().

    Signed-off-by: Deepa Dinamani
    Reported-by: Fengguang Wu [0-day test robot]
    Reviewed-by: Arnd Bergmann
    Signed-off-by: Al Viro

    Deepa Dinamani
     
  • current_fs_time() is used for inode timestamps.

    Change the signature of the function to take inode pointer
    instead of superblock as per Linus's suggestion.

    Also, move the api under vfs as per the discussion on the
    thread: https://lkml.org/lkml/2016/6/9/36 . As per Arnd's
    suggestion on the thread, changing the function name.

    current_fs_time() will be deleted after all the references
    to it are replaced by current_time().

    There was a bug reported by kbuild test bot with the change
    as some of the calls to current_time() were made before the
    super_block was initialized. Catch these accidental assignments
    as timespec_trunc() does for wrong granularities. This allows
    for the function to work right even in these circumstances.
    But, adds a warning to make the user aware of the bug.

    A coccinelle script was used to identify all the current
    .alloc_inode super_block callbacks that updated inode timestamps.
    proc filesystem was the only one that was modifying inode times
    as part of this callback. The series includes a patch to fix that.

    Note that timespec_trunc() will also be moved to fs/inode.c
    in a separate patch when this will need to be revamped for
    bounds checking purposes.

    Signed-off-by: Deepa Dinamani
    Reviewed-by: Arnd Bergmann
    Signed-off-by: Al Viro

    Deepa Dinamani
     

12 Sep, 2016

4 commits

  • Linus Torvalds
     
  • Commit aa71987472a9 ("nvme: fabrics drivers don't need the nvme-pci
    driver") removed the dependency on BLK_DEV_NVME, but the cdoe does
    depend on the block layer (which used to be an implicit dependency
    through BLK_DEV_NVME).

    Otherwise you get various errors from the kbuild test robot random
    config testing when that happens to hit a configuration with BLOCK
    device support disabled.

    Cc: Christoph Hellwig
    Cc: Jay Freyensee
    Cc: Sagi Grimberg
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • Pull IIO fixes from Greg KH:
    "Here are a few small IIO fixes for 4.8-rc6.

    Nothing major, full details are in the shortlog, all of these have
    been in linux-next with no reported issues"

    * tag 'staging-4.8-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
    iio:core: fix IIO_VAL_FRACTIONAL sign handling
    iio: ensure ret is initialized to zero before entering do loop
    iio: accel: kxsd9: Fix scaling bug
    iio: accel: bmc150: reset chip at init time
    iio: fix pressure data output unit in hid-sensor-attributes
    tools:iio:iio_generic_buffer: fix trigger-less mode

    Linus Torvalds
     
  • Pull USB fixes from Greg KH:
    "Here are some small USB gadget, phy, and xhci fixes for 4.8-rc6.

    All of these resolve minor issues that have been reported, and all
    have been in linux-next with no reported issues"

    * tag 'usb-4.8-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
    usb: chipidea: udc: fix NULL ptr dereference in isr_setup_status_phase
    xhci: fix null pointer dereference in stop command timeout function
    usb: dwc3: pci: fix build warning on !PM_SLEEP
    usb: gadget: prevent potenial null pointer dereference on skb->len
    usb: renesas_usbhs: fix clearing the {BRDY,BEMP}STS condition
    usb: phy: phy-generic: Check clk_prepare_enable() error
    usb: gadget: udc: renesas-usb3: clear VBOUT bit in DRD_CON
    Revert "usb: dwc3: gadget: always decrement by 1"

    Linus Torvalds
     

11 Sep, 2016

3 commits

  • Pull libnvdimm fixes from Dan Williams:
    "nvdimm fixes for v4.8, two of them are tagged for -stable:

    - Fix devm_memremap_pages() to use track_pfn_insert(). Otherwise,
    DAX pmd mappings end up with an uncached pgprot, and unusable
    performance for the device-dax interface. The device-dax interface
    appeared in 4.7 so this is tagged for -stable.

    - Fix a couple VM_BUG_ON() checks in the show_smaps() path to
    understand DAX pmd entries. This fix is tagged for -stable.

    - Fix a mis-merge of the nfit machine-check handler to flip the
    polarity of an if() to match the final version of the patch that
    Vishal sent for 4.8-rc1. Without this the nfit machine check
    handler never detects / inserts new 'badblocks' entries which
    applications use to identify lost portions of files.

    - For test purposes, fix the nvdimm_clear_poison() path to operate on
    legacy / simulated nvdimm memory ranges. Without this fix a test
    can set badblocks, but never clear them on these ranges.

    - Fix the range checking done by dax_dev_pmd_fault(). This is not
    tagged for -stable since this problem is mitigated by specifying
    aligned resources at device-dax setup time.

    These patches have appeared in a next release over the past week. The
    recent rebase you can see in the timestamps was to drop an invalid fix
    as identified by the updated device-dax unit tests [1]. The -mm
    touches have an ack from Andrew"

    [1]: "[ndctl PATCH 0/3] device-dax test for recent kernel bugs"
    https://lists.01.org/pipermail/linux-nvdimm/2016-September/006855.html

    * 'libnvdimm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm:
    libnvdimm: allow legacy (e820) pmem region to clear bad blocks
    nfit, mce: Fix SPA matching logic in MCE handler
    mm: fix cache mode of dax pmd mappings
    mm: fix show_smap() for zone_device-pmd ranges
    dax: fix mapping size check

    Linus Torvalds
     
  • Pull i2c fixes from Wolfram Sang:
    "Mostly driver bugfixes, but also a few cleanups which are nice to have
    out of the way"

    * 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
    i2c: rk3x: Restore clock settings at resume time
    i2c: Spelling s/acknowedge/acknowledge/
    i2c: designware: save the preset value of DW_IC_SDA_HOLD
    Documentation: i2c: slave-interface: add note for driver development
    i2c: mux: demux-pinctrl: run properly with multiple instances
    i2c: bcm-kona: fix inconsistent indenting
    i2c: rcar: use proper device with dma_mapping_error
    i2c: sh_mobile: use proper device with dma_mapping_error
    i2c: mux: demux-pinctrl: invalidate properly when switching fails

    Linus Torvalds
     
  • Pull fscrypto fixes fromTed Ts'o:
    "Fix some brown-paper-bag bugs for fscrypto, including one one which
    allows a malicious user to set an encryption policy on an empty
    directory which they do not own"

    * tag 'for_linus_stable' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:
    fscrypto: require write access to mount to set encryption policy
    fscrypto: only allow setting encryption policy on directories
    fscrypto: add authorization check for setting encryption policy

    Linus Torvalds
     

10 Sep, 2016

18 commits

  • Since setting an encryption policy requires writing metadata to the
    filesystem, it should be guarded by mnt_want_write/mnt_drop_write.
    Otherwise, a user could cause a write to a frozen or readonly
    filesystem. This was handled correctly by f2fs but not by ext4. Make
    fscrypt_process_policy() handle it rather than relying on the filesystem
    to get it right.

    Signed-off-by: Eric Biggers
    Cc: stable@vger.kernel.org # 4.1+; check fs/{ext4,f2fs}
    Signed-off-by: Theodore Ts'o
    Acked-by: Jaegeuk Kim

    Eric Biggers
     
  • The FS_IOC_SET_ENCRYPTION_POLICY ioctl allowed setting an encryption
    policy on nondirectory files. This was unintentional, and in the case
    of nonempty regular files did not behave as expected because existing
    data was not actually encrypted by the ioctl.

    In the case of ext4, the user could also trigger filesystem errors in
    ->empty_dir(), e.g. due to mismatched "directory" checksums when the
    kernel incorrectly tried to interpret a regular file as a directory.

    This bug affected ext4 with kernels v4.8-rc1 or later and f2fs with
    kernels v4.6 and later. It appears that older kernels only permitted
    directories and that the check was accidentally lost during the
    refactoring to share the file encryption code between ext4 and f2fs.

    This patch restores the !S_ISDIR() check that was present in older
    kernels.

    Signed-off-by: Eric Biggers
    Cc: stable@vger.kernel.org
    Signed-off-by: Theodore Ts'o

    Eric Biggers
     
  • On an ext4 or f2fs filesystem with file encryption supported, a user
    could set an encryption policy on any empty directory(*) to which they
    had readonly access. This is obviously problematic, since such a
    directory might be owned by another user and the new encryption policy
    would prevent that other user from creating files in their own directory
    (for example).

    Fix this by requiring inode_owner_or_capable() permission to set an
    encryption policy. This means that either the caller must own the file,
    or the caller must have the capability CAP_FOWNER.

    (*) Or also on any regular file, for f2fs v4.6 and later and ext4
    v4.8-rc1 and later; a separate bug fix is coming for that.

    Signed-off-by: Eric Biggers
    Cc: stable@vger.kernel.org # 4.1+; check fs/{ext4,f2fs}
    Signed-off-by: Theodore Ts'o

    Eric Biggers
     
  • Bad blocks can be injected via /sys/block/pmemN/badblocks. In a situation
    where legacy pmem is being used or a pmem region created by using memmap
    kernel parameter, the injected bad blocks are not cleared due to
    nvdimm_clear_poison() failing from lack of ndctl function pointer. In
    this case we need to just return as handled and allow the bad blocks to
    be cleared rather than fail.

    Reviewed-by: Vishal Verma
    Signed-off-by: Dave Jiang
    Signed-off-by: Dan Williams

    Dave Jiang
     
  • The check for a 'pmem' type SPA in the MCE handler was inverted due to a
    merge/rebase error.

    Fixes: 6839a6d nfit: do an ARS scrub on hitting a latent media error
    Cc: linux-acpi@vger.kernel.org
    Cc: Dan Williams
    Signed-off-by: Vishal Verma
    Signed-off-by: Dan Williams

    Vishal Verma
     
  • track_pfn_insert() in vmf_insert_pfn_pmd() is marking dax mappings as
    uncacheable rendering them impractical for application usage. DAX-pte
    mappings are cached and the goal of establishing DAX-pmd mappings is to
    attain more performance, not dramatically less (3 orders of magnitude).

    track_pfn_insert() relies on a previous call to reserve_memtype() to
    establish the expected page_cache_mode for the range. While memremap()
    arranges for reserve_memtype() to be called, devm_memremap_pages() does
    not. So, teach track_pfn_insert() and untrack_pfn() how to handle
    tracking without a vma, and arrange for devm_memremap_pages() to
    establish the write-back-cache reservation in the memtype tree.

    Cc:
    Cc: Matthew Wilcox
    Cc: Ross Zwisler
    Cc: Nilesh Choudhury
    Cc: Kirill A. Shutemov
    Reported-by: Toshi Kani
    Reported-by: Kai Zhang
    Acked-by: Andrew Morton
    Signed-off-by: Dan Williams

    Dan Williams
     
  • Attempting to dump /proc//smaps for a process with pmd dax mappings
    currently results in the following VM_BUG_ONs:

    kernel BUG at mm/huge_memory.c:1105!
    task: ffff88045f16b140 task.stack: ffff88045be14000
    RIP: 0010:[] [] follow_trans_huge_pmd+0x2cb/0x340
    [..]
    Call Trace:
    [] smaps_pte_range+0xa0/0x4b0
    [] ? vsnprintf+0x255/0x4c0
    [] __walk_page_range+0x1fe/0x4d0
    [] walk_page_vma+0x62/0x80
    [] show_smap+0xa6/0x2b0

    kernel BUG at fs/proc/task_mmu.c:585!
    RIP: 0010:[] [] smaps_pte_range+0x499/0x4b0
    Call Trace:
    [] ? vsnprintf+0x255/0x4c0
    [] __walk_page_range+0x1fe/0x4d0
    [] walk_page_vma+0x62/0x80
    [] show_smap+0xa6/0x2b0

    These locations are sanity checking page flags that must be set for an
    anonymous transparent huge page, but are not set for the zone_device
    pages associated with dax mappings.

    Cc: Ross Zwisler
    Cc: Kirill A. Shutemov
    Acked-by: Andrew Morton
    Signed-off-by: Dan Williams

    Dan Williams
     
  • Pull virtio fixes from Michael Tsirkin:
    "This includes a couple of bugfixs for virtio.

    The virtio console patch is actually also in x86/tip targeting 4.9
    because it helps vmap stacks, but it also fixes IOMMU_PLATFORM which
    was added in 4.8, and it seems important not to ship that in a broken
    configuration"

    * tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost:
    virtio_console: Stop doing DMA on the stack
    virtio: mark vring_dma_dev() static

    Linus Torvalds
     
  • Pull power management fixes from Rafael Wysocki:
    "This includes a PM QoS framework fix from Tejun to prevent interrupts
    from being enabled unexpectedly during early boot and a cpufreq
    documentation fix.

    Specifics:

    - If the PM QoS framework invokes cancel_delayed_work_sync() during
    early boot, it will enable interrupts which is not expected at that
    point, so prevent it from happening (Tejun Heo)

    - Fix cpufreq statistic documentation to follow a recent change in
    behavior that forgot to update it as appropriate (Jean Delvare)"

    * tag 'pm-4.8-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    cpufreq-stats: Minor documentation fix
    PM / QoS: avoid calling cancel_delayed_work_sync() during early boot

    Linus Torvalds
     
  • * pm-core-fixes:
    PM / QoS: avoid calling cancel_delayed_work_sync() during early boot

    * pm-cpufreq-fixes:
    cpufreq-stats: Minor documentation fix

    Rafael J. Wysocki
     
  • Pull GPIO fixes from Linus Walleij:
    "Some GPIO fixes that have been boiling the last two weeks or so.
    Nothing special, I'm trying to sort out some Kconfig business and
    Russell needs a fix in for -his SA1100 rework.

    Summary:

    - Revert a pointless attempt to add an include to solve the UM allyes
    compilation problem.

    - Make the mcp23s08 depend on OF_GPIO as it uses it and doesn't
    compile properly without it.

    - Fix a probing problem for ucb1x00"

    * tag 'gpio-v4.8-3' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio:
    gpio: sa1100: fix irq probing for ucb1x00
    gpio: mcp23s08: make driver depend on OF_GPIO
    Revert "gpio: include in gpiolib-of"

    Linus Torvalds
     
  • Pull fuse fix from Miklos Szeredi:
    "This fixes a deadlock when fuse, direct I/O and loop device are
    combined"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse:
    fuse: direct-io: don't dirty ITER_BVEC pages

    Linus Torvalds
     
  • Pull overlayfs fix from Miklos Szeredi:
    "This fixes a regression caused by the last pull request"

    * 'overlayfs-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/vfs:
    ovl: fix workdir creation

    Linus Torvalds
     
  • Pull btrfs fixes from Chris Mason:
    "I'm not proud of how long it took me to track down that one liner in
    btrfs_sync_log(), but the good news is the patches I was trying to
    blame for these problems were actually fine (sorry Filipe)"

    * 'for-linus-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
    btrfs: introduce tickets_id to determine whether asynchronous metadata reclaim work makes progress
    btrfs: remove root_log_ctx from ctx list before btrfs_sync_log returns
    btrfs: do not decrease bytes_may_use when replaying extents

    Linus Torvalds
     
  • Pull sound fixes from Takashi Iwai:
    "We've got quite a few fixes at this time, and all are stable patches.

    syzkaller strikes back again (episode 19 or so), and we had to plug
    some holes in ALSA core part (mostly timer).

    In addition, a couple of FireWire audio fixes for the invalid copy
    user calls in locks, and a few quirks for HD-audio and USB-audio as
    usual are included"

    * tag 'sound-4.8-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
    ALSA: rawmidi: Fix possible deadlock with virmidi registration
    ALSA: timer: Fix zero-division by continue of uninitialized instance
    ALSA: timer: fix NULL pointer dereference in read()/ioctl() race
    ALSA: fireworks: accessing to user space outside spinlock
    ALSA: firewire-tascam: accessing to user space outside spinlock
    ALSA: hda - Enable subwoofer on Dell Inspiron 7559
    ALSA: hda - Add headset mic quirk for Dell Inspiron 5468
    ALSA: usb-audio: Add sample rate inquiry quirk for B850V3 CP2114
    ALSA: timer: fix NULL pointer dereference on memory allocation failure
    ALSA: timer: fix division by zero after SNDRV_TIMER_IOCTL_CONTINUE

    Linus Torvalds
     
  • virtio_console uses a small DMA buffer for control requests. Move
    that buffer into heap memory.

    Doing virtio DMA on the stack is normally okay on non-DMA-API virtio
    systems (which is currently most of them), but it breaks completely
    if the stack is virtually mapped.

    Tested by typing both directions using picocom aimed at /dev/hvc0.

    Signed-off-by: Andy Lutomirski
    Signed-off-by: Michael S. Tsirkin
    Reviewed-by: Amit Shah

    Andy Lutomirski
     
  • We get 1 warning when building kernel with W=1:
    drivers/virtio/virtio_ring.c:170:16: warning: no previous prototype for 'vring_dma_dev' [-Wmissing-prototypes]

    In fact, this function is only used in the file in which it is
    declared and don't need a declaration, but can be made static.
    so this patch marks this function with 'static'.

    Signed-off-by: Baoyou Xie
    Acked-by: Arnd Bergmann
    Signed-off-by: Michael S. Tsirkin

    Baoyou Xie
     
  • Pull arm64 fixes from Catalin Marinas:

    - smp_mb__before_spinlock() changed to smp_mb() on arm64 since the
    generic definition to smp_wmb() is not sufficient

    - avoid a recursive loop with the graph tracer by using using
    preempt_(enable|disable)_notrace in _percpu_(read|write)

    * tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
    arm64: use preempt_disable_notrace in _percpu_read/write
    arm64: spinlocks: implement smp_mb__before_spinlock() as smp_mb()

    Linus Torvalds
     

09 Sep, 2016

11 commits

  • Pull powerpc fixes from Michael Ellerman:
    "Fixes marked for stable:
    - Don't alias user region to other regions below PAGE_OFFSET from
    Paul Mackerras
    - Fix again csum_partial_copy_generic() on 32-bit from Christophe
    Leroy
    - Fix corrupted PE allocation bitmap on releasing PE from Gavin Shan

    Fixes for code merged this cycle:
    - Fix crash on releasing compound PE from Gavin Shan
    - Fix processor numbers in OPAL ICP from Benjamin Herrenschmidt
    - Fix little endian build with CONFIG_KEXEC=n from Thiago Jung
    Bauermann"

    * tag 'powerpc-4.8-5' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
    powerpc/mm: Don't alias user region to other regions below PAGE_OFFSET
    powerpc/32: Fix again csum_partial_copy_generic()
    powerpc/powernv: Fix corrupted PE allocation bitmap on releasing PE
    powerpc/powernv: Fix crash on releasing compound PE
    powerpc/xics/opal: Fix processor numbers in OPAL ICP
    powerpc/pseries: Fix little endian build with CONFIG_KEXEC=n

    Linus Torvalds
     
  • Pull ARM fixes from Russell King:
    "A few ARM fixes:

    - Robin Murphy noticed that the non-secure privileged entry was
    relying on undefined behaviour, which needed to be fixed.

    - Vladimir Murzin noticed that prov-v7 fails to build for MMUless
    configurations because a required header file wasn't included.

    - A bunch of fixes for StrongARM regressions found while testing
    4.8-rc on such platforms"

    * 'fixes' of git://git.armlinux.org.uk/~rmk/linux-arm:
    ARM: sa1100: clear reset status prior to reboot
    ARM: 8600/1: Enforce some NS-SVC initialisation
    ARM: 8599/1: mm: pull asm/memory.h explicitly
    ARM: sa1100: register clocks early
    ARM: sa1100: fix 3.6864MHz clock

    Linus Torvalds
     
  • …balbi/usb into usb-linus

    Felipe writes:

    usb: fixes for v4.8-rc6

    Unfortunately we have a bogus dwc3 patch leaked through the cracks and
    got merged into Linus' HEAD. That patch ended up causing off-by-1 error
    in our TRB accounting logic. Thankfully John Youn found out the problem
    and we provided a revert to the bogus dwc3 patch in no time.

    Apart from this off-by-1 error, we have two fixes to the Renesas drivers,
    a small fix to our generic phy driver, a NULL pointer dereference fix for
    f_eem and a build warning fix in dwc3.

    Greg Kroah-Hartman
     
  • …er.chen/usb into usb-linus

    Peter writes:

    Fix the possible kernel panic when the hardware signal is bad for chipidea udc.

    Greg Kroah-Hartman
     
  • …jic23/iio into staging-linus

    Jonathan writes:

    Second set of IIO fixes for the 4.8 cycle.

    We have a big rework of the kxsd9 driver queued up behind the fix below and
    a fix for a recent fix that was marked for stable.
    Hence this fix series is perhaps a little more urgent than average for IIO.
    * core
    - a fix for a fix in the last set. The recent fix for blocking ops when
    ! task running left a path (unlikely one) in which the function return
    value was not set - so initialise it to 0.
    - The IIO_TYPE_FRACTIONAL code previously didn't cope with negative
    fractions. Turned out a fix for this was in Analog's tree but hadn't made
    it upstream.
    * bmc150
    - reset chip at init time. At least one board out there ends up coming up
    in an unstable state due to noise during power up. The reset does no
    harm on other boards.
    * kxsd9
    - Fix a bug in the reported scaling due to failing to set the integer
    part to 0.
    * hid-sensors-pressure
    - Output was in the wrong units to comply with the IIO ABI.
    * tools
    - iio_generic_buffer: Fix the trigger-less mode by ensuring we don't fault
    out for having no trigger when we explicitly said we didn't want to have
    one.

    Greg Kroah-Hartman
     
  • When debug preempt or preempt tracer is enabled, preempt_count_add/sub()
    can be traced by function and function graph tracing, and
    preempt_disable/enable() would call preempt_count_add/sub(), so in Ftrace
    subsystem we should use preempt_disable/enable_notrace instead.

    In the commit 345ddcc882d8 ("ftrace: Have set_ftrace_pid use the bitmap
    like events do") the function this_cpu_read() was added to
    trace_graph_entry(), and if this_cpu_read() calls preempt_disable(), graph
    tracer will go into a recursive loop, even if the tracing_on is
    disabled.

    So this patch change to use preempt_enable/disable_notrace instead in
    this_cpu_read().

    Since Yonghui Yang helped a lot to find the root cause of this problem,
    so also add his SOB.

    Signed-off-by: Yonghui Yang
    Signed-off-by: Chunyan Zhang
    Acked-by: Will Deacon
    Signed-off-by: Catalin Marinas

    Chunyan Zhang
     
  • smp_mb__before_spinlock() is intended to upgrade a spin_lock() operation
    to a full barrier, such that prior stores are ordered with respect to
    loads and stores occuring inside the critical section.

    Unfortunately, the core code defines the barrier as smp_wmb(), which
    is insufficient to provide the required ordering guarantees when used in
    conjunction with our load-acquire-based spinlock implementation.

    This patch overrides the arm64 definition of smp_mb__before_spinlock()
    to map to a full smp_mb().

    Cc:
    Cc: Peter Zijlstra
    Reported-by: Alan Stern
    Signed-off-by: Will Deacon
    Signed-off-by: Catalin Marinas

    Will Deacon
     
  • Problems with the signal integrity of the high speed USB data lines or
    noise on reference ground lines can cause the i.MX6 USB controller to
    violate USB specs and exhibit unexpected behavior.

    It was observed that USBi_UI interrupts were triggered first and when
    isr_setup_status_phase was called, ci->status was NULL, which lead to a
    NULL pointer dereference kernel panic.

    This patch fixes the kernel panic, emits a warning once and returns
    -EPIPE to halt the device and let the host get stalled.
    It also adds a comment to point people, who are experiencing this issue,
    to their USB hardware design.

    Cc: #4.1+
    Signed-off-by: Clemens Gruber
    Signed-off-by: Peter Chen

    Clemens Gruber
     
  • The cpufreq-stats code can no longer be built as a module, so it now
    appears with square brackets in menuconfig.

    Signed-off-by: Jean Delvare
    Fixes: 1aefc75b2449 (cpufreq: stats: Make the stats code non-modular)
    Acked-by: Viresh Kumar
    Signed-off-by: Rafael J. Wysocki

    Jean Delvare
     
  • Depending on a number of factors including:
    - Which exact Rockchip SoC we're working with
    - How deep we suspend
    - Which i2c port we're on

    We might lose the state of the i2c registers at suspend time.
    Specifically we've found that on rk3399 the i2c ports that are not in
    the PMU power domain lose their state with the current suspend depth
    configured by ARM Tursted Firmware.

    Note that there are very few actual i2c registers that aren't configured
    per transfer anyway so all we actually need to re-configure are the
    clock config registers. We'll just add a call to rk3x_i2c_adapt_div()
    at resume time and be done with it.

    NOTE: On rk3399 on ports whose power was lost, I put printouts in at
    resume time. I saw things like:
    before: con=0x00010300, div=0x00060006
    after: con=0x00010200, div=0x00180025

    Signed-off-by: Douglas Anderson
    Reviewed-by: David Wu
    Tested-by: David Wu
    [wsa: removed duplicate const]
    Signed-off-by: Wolfram Sang

    Doug Anderson
     
  • Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Wolfram Sang

    Geert Uytterhoeven