1. 12 Oct, 2018 3 commits
    • Sergey Senozhatsky's avatar
      printk: do not preliminary split up cont buffer · 0e96a19c
      Sergey Senozhatsky authored
      We have a proper 'overflow' check which tells us that we need to
      split up existing cont buffer in separate records:
      
      	if (cont.len + len > sizeof(cont.buf))
      		cont_flush();
      
      At the same time we also have one extra flush: "if cont buffer is
      80% full then split it up" in cont_add():
      
      	if (cont.len > (sizeof(cont.buf) * 80) / 100)
      		cont_flush();
      
      This looks to be redundant, since the existing "overflow" check
      should work just fine, so remove this 80% check and wait for either
      a normal cont termination \n, for preliminary flush due to
      possible buffer overflow or for preliminary flush due to cont race.
      
      Link: http://lkml.kernel.org/r/20181002023836.4487-4-sergey.senozhatsky@gmail.com
      To: Steven Rostedt <rostedt@goodmis.org>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Dmitriy Vyukov <dvyukov@google.com>
      Cc: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: LKML <linux-kernel@vger.kernel.org>
      Cc: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
      Signed-off-by: default avatarSergey Senozhatsky <sergey.senozhatsky@gmail.com>
      Signed-off-by: default avatarPetr Mladek <pmladek@suse.com>
      0e96a19c
    • Sergey Senozhatsky's avatar
      printk: lock/unlock console only for new logbuf entries · 3ac37a93
      Sergey Senozhatsky authored
      Prior to commit 5c2992ee ("printk: remove console flushing special
      cases for partial buffered lines") we would do console_cont_flush()
      for each pr_cont() to print cont fragments, so console_unlock() would
      actually print data:
      
      	pr_cont();
      	 console_lock();
      	 console_unlock()
      	  console_cont_flush(); // print cont fragment
      	...
      	pr_cont();
      	 console_lock();
      	 console_unlock()
      	  console_cont_flush(); // print cont fragment
      
      We don't do console_cont_flush() anymore, so when we do pr_cont()
      console_unlock() does nothing (unless we flushed the cont buffer):
      
      	pr_cont();
      	 console_lock();
      	 console_unlock();      // noop
      	...
      	pr_cont();
      	 console_lock();
      	 console_unlock();      // noop
      	...
      	pr_cont();
      	  cont_flush();
      	    console_lock();
      	    console_unlock();   // print data
      
      We also wakeup klogd purposelessly for pr_cont() output - un-flushed
      cont buffer is not stored in log_buf; there is nothing to pull.
      
      Thus we can console_lock()/console_unlock()/wake_up_klogd() only when
      we know that we log_store()-ed a message and there is something to
      print to the consoles/syslog.
      
      Link: http://lkml.kernel.org/r/20181002023836.4487-3-sergey.senozhatsky@gmail.com
      To: Steven Rostedt <rostedt@goodmis.org>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Dmitriy Vyukov <dvyukov@google.com>
      Cc: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: LKML <linux-kernel@vger.kernel.org>
      Cc: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
      Signed-off-by: default avatarSergey Senozhatsky <sergey.senozhatsky@gmail.com>
      Signed-off-by: default avatarPetr Mladek <pmladek@suse.com>
      3ac37a93
    • Sergey Senozhatsky's avatar
      printk: keep kernel cont support always enabled · 9627808d
      Sergey Senozhatsky authored
      Since commit 5c2992ee ("printk: remove console flushing special
      cases for partial buffered lines") we don't print cont fragments
      to the consoles; cont lines are now proper log_buf entries and
      there is no "consecutive continuation flag" anymore: we either
      have 'c' entries that mark continuation lines without fragments;
      or '-' entries that mark normal logbuf entries. There are no '+'
      entries anymore.
      
      However, we still have a small leftover - presence of ext_console
      drivers disables kernel cont support and we flush each pr_cont()
      and store it as a separate log_buf entry. Previously, it worked
      because msg_print_ext_header() had that "an optional external merge
      of the records" functionality:
      
      	if (msg->flags & LOG_CONT)
      		cont = (prev_flags & LOG_CONT) ? '+' : 'c';
      
      We don't do this as of now, so keep kernel cont always enabled.
      
      Note from pmladek:
      
      The original purpose was to get full information including
      the metadata and dictionary via extended console drivers,
      see commit 6fe29354 ("printk: implement support
      for extended console drivers").
      
      The dictionary probably was the most important part but
      it was actually lost:
      
        static void cont_flush(void)
        {
        [...]
      	log_store(cont.facility, cont.level, cont.flags, cont.ts_nsec,
      		  NULL, 0, cont.buf, cont.len);
      
      Nobody noticed because the only dictionary user is dev_printk()
      and dev_cont() is _not_ defined.
      
      Link: http://lkml.kernel.org/r/20181002023836.4487-2-sergey.senozhatsky@gmail.com
      To: Steven Rostedt <rostedt@goodmis.org>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Dmitriy Vyukov <dvyukov@google.com>
      Cc: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: LKML <linux-kernel@vger.kernel.org>
      Cc: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
      Signed-off-by: default avatarSergey Senozhatsky <sergey.senozhatsky@gmail.com>
      [pmladek@suse.com: Updated commit message]
      Signed-off-by: default avatarPetr Mladek <pmladek@suse.com>
      9627808d
  2. 09 Oct, 2018 1 commit
  3. 05 Oct, 2018 3 commits
  4. 02 Oct, 2018 2 commits
    • Sergey Senozhatsky's avatar
      printk: CON_PRINTBUFFER console registration is a bit racy · 884e370e
      Sergey Senozhatsky authored
      CON_PRINTBUFFER console registration requires us to do several
      preparation steps:
      - Rollback console_seq to replay logbuf messages which were already
        seen on other consoles;
      - Set exclusive_console flag so console_unlock() will ->write() logbuf
        messages only to the exclusive_console driver.
      
      The way we do it, however, is a bit racy
      
      	logbuf_lock_irqsave(flags);
      	console_seq = syslog_seq;
      	console_idx = syslog_idx;
      	logbuf_unlock_irqrestore(flags);
      						<< preemption enabled
      						<< irqs enabled
      	exclusive_console = newcon;
      	console_unlock();
      
      We rollback console_seq under logbuf_lock with IRQs disabled, but
      we set exclusive_console with local IRQs enabled and logbuf unlocked.
      If the system oops-es or panic-s before we set exclusive_console - and
      given that we have IRQs and preemption enabled there is such a
      possibility - we will re-play all logbuf messages to every registered
      console, which may be a bit annoying and time consuming.
      
      Move exclusive_console assignment to the same IRQs-disabled and
      logbuf_lock-protected section where we rollback console_seq.
      
      Link: http://lkml.kernel.org/r/20180928095304.9972-1-sergey.senozhatsky@gmail.com
      To: Steven Rostedt <rostedt@goodmis.org>
      Cc: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
      Cc: linux-kernel@vger.kernel.org
      Signed-off-by: default avatarSergey Senozhatsky <sergey.senozhatsky@gmail.com>
      Signed-off-by: default avatarPetr Mladek <pmladek@suse.com>
      884e370e
    • Petr Mladek's avatar
      printk: Do not miss new messages when replaying the log · f92b070f
      Petr Mladek authored
      The variable "exclusive_console" is used to reply all existing messages
      on a newly registered console. It is cleared when all messages are out.
      
      The problem is that new messages might appear in the meantime. These
      are then visible only on the exclusive console.
      
      The obvious solution is to clear "exclusive_console" after we replay
      all messages that were already proceed before we started the reply.
      Reported-by: default avatarSergey Senozhatsky <sergey.senozhatsky@gmail.com>
      Link: http://lkml.kernel.org/r/20180913123406.14378-1-pmladek@suse.com
      To: Steven Rostedt <rostedt@goodmis.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
      Cc: linux-kernel@vger.kernel.org
      Acked-by: default avatarSergey Senozhatsky <sergey.senozhatsky@gmail.com>
      Signed-off-by: default avatarPetr Mladek <pmladek@suse.com>
      f92b070f
  5. 14 Sep, 2018 12 commits
  6. 13 Sep, 2018 11 commits
    • Dave Airlie's avatar
      Merge branch 'linux-4.19' of git://github.com/skeggsb/linux into drm-fixes · 2b6318a0
      Dave Airlie authored
      One more nouveau fix to remove some debug warnings.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      From: Ben Skeggs <bskeggs@redhat.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/CABDvA==GF63dy8a9j611=-0x8G6FRu7uC-ZQypsLO_hqV4OAcA@mail.gmail.com
      2b6318a0
    • Dave Airlie's avatar
      Merge branch 'drm-fixes-4.19' of git://people.freedesktop.org/~agd5f/linux into drm-fixes · 25824ca3
      Dave Airlie authored
      A few fixes for 4.19:
      - Fix a small memory leak
      - SR-IOV reset fix
      - Fix locking in MMU-notifier error path
      - Updated SDMA golden settings to fix a PRT hang
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      From: Alex Deucher <alexdeucher@gmail.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180912154735.2683-1-alexander.deucher@amd.com
      25824ca3
    • Dave Airlie's avatar
      Merge tag 'drm-intel-fixes-2018-09-11' of... · db7f06d4
      Dave Airlie authored
      Merge tag 'drm-intel-fixes-2018-09-11' of git://anongit.freedesktop.org/drm/drm-intel into drm-fixes
      
      This contains a regression fix for video playbacks on gen 2 hardware,
      a IPS timeout error suppression on Broadwell and GVT bucked with
      "Most critical one is to fix KVM's mm reference when we access guest memory,
      issue was raised by Linus [1], and another one with virtual opregion fix."
      
      [1] - https://lists.freedesktop.org/archives/intel-gvt-dev/2018-August/004130.htmlSigned-off-by: default avatarDave Airlie <airlied@redhat.com>
      
      From: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180911223229.GA30328@intel.com
      db7f06d4
    • Tejun Heo's avatar
      MAINTAINERS: Make Dennis the percpu tree maintainer · 1194c415
      Tejun Heo authored
      Dennis rewrote a significant portion of the percpu allocator and has
      shown that he can respond in a timely and helpful manner when issues
      are reported against percpu allocator.
      
      Let's make Dennis the percpu tree maintainer.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Cc: Dennis Zhou <dennis@kernel.org>
      Cc: Christoph Lameter <cl@linux.com>
      1194c415
    • Bin Yang's avatar
      pstore: Fix incorrect persistent ram buffer mapping · 831b624d
      Bin Yang authored
      persistent_ram_vmap() returns the page start vaddr.
      persistent_ram_iomap() supports non-page-aligned mapping.
      
      persistent_ram_buffer_map() always adds offset-in-page to the vaddr
      returned from these two functions, which causes incorrect mapping of
      non-page-aligned persistent ram buffer.
      
      By default ftrace_size is 4096 and max_ftrace_cnt is nr_cpu_ids. Without
      this patch, the zone_sz in ramoops_init_przs() is 4096/nr_cpu_ids which
      might not be page aligned. If the offset-in-page > 2048, the vaddr will be
      in next page. If the next page is not mapped, it will cause kernel panic:
      
      [    0.074231] BUG: unable to handle kernel paging request at ffffa19e0081b000
      ...
      [    0.075000] RIP: 0010:persistent_ram_new+0x1f8/0x39f
      ...
      [    0.075000] Call Trace:
      [    0.075000]  ramoops_init_przs.part.10.constprop.15+0x105/0x260
      [    0.075000]  ramoops_probe+0x232/0x3a0
      [    0.075000]  platform_drv_probe+0x3e/0xa0
      [    0.075000]  driver_probe_device+0x2cd/0x400
      [    0.075000]  __driver_attach+0xe4/0x110
      [    0.075000]  ? driver_probe_device+0x400/0x400
      [    0.075000]  bus_for_each_dev+0x70/0xa0
      [    0.075000]  driver_attach+0x1e/0x20
      [    0.075000]  bus_add_driver+0x159/0x230
      [    0.075000]  ? do_early_param+0x95/0x95
      [    0.075000]  driver_register+0x70/0xc0
      [    0.075000]  ? init_pstore_fs+0x4d/0x4d
      [    0.075000]  __platform_driver_register+0x36/0x40
      [    0.075000]  ramoops_init+0x12f/0x131
      [    0.075000]  do_one_initcall+0x4d/0x12c
      [    0.075000]  ? do_early_param+0x95/0x95
      [    0.075000]  kernel_init_freeable+0x19b/0x222
      [    0.075000]  ? rest_init+0xbb/0xbb
      [    0.075000]  kernel_init+0xe/0xfc
      [    0.075000]  ret_from_fork+0x3a/0x50
      Signed-off-by: default avatarBin Yang <bin.yang@intel.com>
      [kees: add comments describing the mapping differences, updated commit log]
      Fixes: 24c3d2f3 ("staging: android: persistent_ram: Make it possible to use memory outside of bootmem")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarKees Cook <keescook@chromium.org>
      831b624d
    • Linus Torvalds's avatar
      Merge tag 'pci-v4.19-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci · 54eda9df
      Linus Torvalds authored
      Pull PCI fixes from Bjorn Helgaas:
      
       - Add Tyrel Datwyler as maintainer for PPC64 RPA hotplug (Tyrel
         Datwyler)
      
       - Add Gustavo Pimentel as DesignWare PCI maintainer (Joao Pinto)
      
       - Fix a Switchtec Spectre v1 vulnerability (Gustavo A. R. Silva)
      
       - Revert an unnecessary Intel 300 ACS quirk (Mika Westerberg)
      
       - Fix pciehp hot-add/powerfault detection that left indicators in wrong
         state (Keith Busch)
      
       - Fix pci_reset_bus() logic error (Dennis Dalessandro)
      
       - Revert IB/hfi1 PCI reset change that caused a deadlock (Dennis
         Dalessandro)
      
       - Allow enabling PASID on Root Complex Integrated Endpoints (Felix
         Kuehling)
      
      * tag 'pci-v4.19-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci:
        PCI: Fix enabling of PASID on RC integrated endpoints
        IB/hfi1,PCI: Allow bus reset while probing
        PCI: Fix faulty logic in pci_reset_bus()
        PCI: pciehp: Fix hot-add vs powerfault detection order
        switchtec: Fix Spectre v1 vulnerability
        Revert "PCI: Add ACS quirk for Intel 300 series"
        MAINTAINERS: Add Gustavo Pimentel as DesignWare PCI maintainer
        MAINTAINERS: Add entries for PPC64 RPA PCI hotplug drivers
      54eda9df
    • Linus Torvalds's avatar
      Merge tag 'for-linus-4.19' of git://github.com/cminyard/linux-ipmi · d3bd5973
      Linus Torvalds authored
      Pull IPMI bugfixes from Corey Minyard:
       "A few fixes that came around or after the merge window, except for
        commit cd2315d4 ("ipmi: kcs_bmc: don't change device name") which
        is for a driver that very few people use, and those people need the
        change"
      
      * tag 'for-linus-4.19' of git://github.com/cminyard/linux-ipmi:
        ipmi: Fix NULL pointer dereference in ssif_probe
        ipmi: Fix I2C client removal in the SSIF driver
        ipmi: Move BT capabilities detection to the detect call
        ipmi: Rework SMI registration failure
        ipmi: kcs_bmc: don't change device name
      d3bd5973
    • Linus Torvalds's avatar
      Merge tag 'drm-fixes-2018-09-12' of git://anongit.freedesktop.org/drm/drm · 7428b2e5
      Linus Torvalds authored
      Pull drm nouveau fixes from Dave Airlie:
       "I'm sending this separately as it's a bit larger than I generally like
        for one driver, but it does contain a bunch of make my nvidia laptop
        not die (runpm) and a bunch to make my docking station and monitor
        display stuff (mst) fixes.
      
        Lyude has spent a lot of time on these, and we are putting the fixes
        into distro kernels as well asap, as it helps a bunch of standard
        Lenovo laptops, so I'm fairly happy things are better than they were
        before these patches, but I decided to split them out just for
        clarification"
      
      * tag 'drm-fixes-2018-09-12' of git://anongit.freedesktop.org/drm/drm:
        drm/nouveau/disp/gm200-: enforce identity-mapped SOR assignment for LVDS/eDP panels
        drm/nouveau/disp: fix DP disable race
        drm/nouveau/disp: move eDP panel power handling
        drm/nouveau/disp: remove unused struct member
        drm/nouveau/TBDdevinit: don't fail when PMU/PRE_OS is missing from VBIOS
        drm/nouveau/mmu: don't attempt to dereference vmm without valid instance pointer
        drm/nouveau: fix oops in client init failure path
        drm/nouveau: Fix nouveau_connector_ddc_detect()
        drm/nouveau/drm/nouveau: Don't forget to cancel hpd_work on suspend/unload
        drm/nouveau/drm/nouveau: Prevent handling ACPI HPD events too early
        drm/nouveau: Reset MST branching unit before enabling
        drm/nouveau: Only write DP_MSTM_CTRL when needed
        drm/nouveau: Remove useless poll_enable() call in drm_load()
        drm/nouveau: Remove useless poll_disable() call in switcheroo_set_state()
        drm/nouveau: Remove useless poll_enable() call in switcheroo_set_state()
        drm/nouveau: Fix deadlocks in nouveau_connector_detect()
        drm/nouveau/drm/nouveau: Use pm_runtime_get_noresume() in connector_detect()
        drm/nouveau/drm/nouveau: Fix deadlock with fb_helper with async RPM requests
        drm/nouveau: Remove duplicate poll_enable() in pmops_runtime_suspend()
        drm/nouveau/drm/nouveau: Fix bogus drm_kms_helper_poll_enable() placement
      7428b2e5
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 67b07609
      Linus Torvalds authored
      Pull networking fixes from David Miller:
      
       1) Fix up several Kconfig dependencies in netfilter, from Martin Willi
          and Florian Westphal.
      
       2) Memory leak in be2net driver, from Petr Oros.
      
       3) Memory leak in E-Switch handling of mlx5 driver, from Raed Salem.
      
       4) mlx5_attach_interface needs to check for errors, from Huy Nguyen.
      
       5) tipc_release() needs to orphan the sock, from Cong Wang.
      
       6) Need to program TxConfig register after TX/RX is enabled in r8169
          driver, not beforehand, from Maciej S. Szmigiero.
      
       7) Handle 64K PAGE_SIZE properly in ena driver, from Netanel Belgazal.
      
       8) Fix crash regression in ip_do_fragment(), from Taehee Yoo.
      
       9) syzbot can create conditions where kernel log is flooded with
          synflood warnings due to creation of many listening sockets, fix
          that. From Willem de Bruijn.
      
      10) Fix RCU issues in rds socket layer, from Cong Wang.
      
      11) Fix vlan matching in nfp driver, from Pieter Jansen van Vuuren.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (59 commits)
        nfp: flower: reject tunnel encap with ipv6 outer headers for offloading
        nfp: flower: fix vlan match by checking both vlan id and vlan pcp
        tipc: check return value of __tipc_dump_start()
        s390/qeth: don't dump past end of unknown HW header
        s390/qeth: use vzalloc for QUERY OAT buffer
        s390/qeth: switch on SG by default for IQD devices
        s390/qeth: indicate error when netdev allocation fails
        rds: fix two RCU related problems
        r8169: Clear RTL_FLAG_TASK_*_PENDING when clearing RTL_FLAG_TASK_ENABLED
        erspan: fix error handling for erspan tunnel
        erspan: return PACKET_REJECT when the appropriate tunnel is not found
        tcp: rate limit synflood warnings further
        MIPS: lantiq: dma: add dev pointer
        netfilter: xt_hashlimit: use s->file instead of s->private
        netfilter: nfnetlink_queue: Solve the NFQUEUE/conntrack clash for NF_REPEAT
        netfilter: cttimeout: ctnl_timeout_find_get() returns incorrect pointer to type
        netfilter: conntrack: timeout interface depend on CONFIG_NF_CONNTRACK_TIMEOUT
        netfilter: conntrack: reset tcp maxwin on re-register
        qmi_wwan: Support dynamic config on Quectel EP06
        ethernet: renesas: convert to SPDX identifiers
        ...
      67b07609
    • Ben Skeggs's avatar
      drm/nouveau/devinit: fix warning when PMU/PRE_OS is missing · 3483f081
      Ben Skeggs authored
      Messed up when sending pull request and sent an outdated version of
      previous patch, this fixes it up to remove warnings.
      Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
      3483f081
    • Jens Axboe's avatar
      null_blk: fix zoned support for non-rq based operation · b228ba1c
      Jens Axboe authored
      The supported added for zones in null_blk seem to assume that only rq
      based operation is possible. But this depends on the queue_mode setting,
      if this is set to 0, then cmd->bio is what we need to be operating on.
      Right now any attempt to load null_blk with queue_mode=0 will
      insta-crash, since cmd->rq is NULL and null_handle_cmd() assumes it to
      always be set.
      
      Make the zoned code deal with bio's instead, or pass in the
      appropriate sector/nr_sectors instead.
      
      Fixes: ca4b2a01 ("null_blk: add zone support")
      Tested-by: default avatarOmar Sandoval <osandov@fb.com>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      b228ba1c
  7. 12 Sep, 2018 8 commits