1. 29 3月, 2014 6 次提交
  2. 28 3月, 2014 3 次提交
  3. 27 3月, 2014 4 次提交
    • D
      drm/nouveau: fail runtime pm properly. · adbbdbac
      Dave Airlie 提交于
      If we were on a non-optimus device, we'd return -EINVAL, this would
      lead to the over engineered runtime pm system to go into an error
      state, subsequent get_sync's would fail, so we'd never be able
      to open the device again.
      
      (like really get_sync shouldn't fail if the device isn't powered
      down).
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      Reviewed-by: NAlex Deucher <alexander.deucher@amd.com>
      adbbdbac
    • D
      drm/udl: take reference to device struct for dma-bufs · 347cf10a
      Dave Airlie 提交于
      this stops the device from being deleted before all the dma-bufs
      on it are freed, this fixes an oops when you unplug a udl device while
      it has imported a buffer from another device.
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      347cf10a
    • H
      Input: cypress_ps2 - don't report as a button pads · 6797b39e
      Hans de Goede 提交于
      The cypress PS/2 trackpad models supported by the cypress_ps2 driver
      emulate BTN_RIGHT events in firmware based on the finger position, as part
      of this no motion events are sent when the finger is in the button area.
      
      The INPUT_PROP_BUTTONPAD property is there to indicate to userspace that
      BTN_RIGHT events should be emulated in userspace, which is not necessary
      in this case.
      
      When INPUT_PROP_BUTTONPAD is advertised userspace will wait for a motion
      event before propagating the button event higher up the stack, as it needs
      current abs x + y data for its BTN_RIGHT emulation. Since in the
      cypress_ps2 pads don't report motion events in the button area, this means
      that clicks in the button area end up being ignored, so
      INPUT_PROP_BUTTONPAD actually causes problems for these touchpads, and
      removing it fixes:
      
      https://bugs.freedesktop.org/show_bug.cgi?id=76341Reported-by: NAdam Williamson <awilliam@redhat.com>
      Tested-by: NAdam Williamson <awilliam@redhat.com>
      Reviewed-by: NPeter Hutterer <peter.hutterer@who-t.net>
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Signed-off-by: NDmitry Torokhov <dmitry.torokhov@gmail.com>
      6797b39e
    • L
      Merge tag 'trace-fixes-v3.14-rc7-v2' of... · f217c44e
      Linus Torvalds 提交于
      Merge tag 'trace-fixes-v3.14-rc7-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace
      
      Pull tracing fix from Steven Rostedt:
       "While on my flight to Linux Collaboration Summit, I was working on my
        slides for the event trigger tutorial.  I booted a 3.14-rc7 kernel to
        perform what I wanted to teach and cut and paste it into my slides.
        When I tried the traceon event trigger with a condition attached to it
        (turns tracing on only if a field of the trigger event matches a
        condition set by the user), nothing happened.  Tracing would not turn
        on.  I stopped working on my presentation in order to find what was
        wrong.
      
        It ended up being the way trace event triggers work when they have
        conditions.  Instead of copying the fields, the condition code just
        looks at the fields that were copied into the ring buffer.  This works
        great, unless tracing is off.  That's because when the event is
        reserved on the ring buffer, the ring buffer returns a NULL pointer,
        this tells the tracing code that the ring buffer is disabled.  This
        ends up being a problem for the traceon trigger if it is using this
        information to check its condition.
      
        Luckily the code that checks if tracing is on returns the ring buffer
        to use (because the ring buffer is determined by the event file also
        passed to that field).  I was able to easily solve this bug by
        checking in that helper function if the returned ring buffer entry is
        NULL, and if so, also check the file flag if it has a trace event
        trigger condition, and if so, to pass back a temp ring buffer to use.
        This will allow the trace event trigger condition to still test the
        event fields, but nothing will be recorded"
      
      * tag 'trace-fixes-v3.14-rc7-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
        tracing: Fix traceon trigger condition to actually turn tracing on
      f217c44e
  4. 26 3月, 2014 5 次提交
    • S
      tracing: Fix traceon trigger condition to actually turn tracing on · 2c4a33ab
      Steven Rostedt (Red Hat) 提交于
      While working on my tutorial for 2014 Linux Collaboration Summit
      I found that the traceon trigger did not work when conditions were
      used. The other triggers worked fine though. Looking into it, it
      is because of the way the triggers use the ring buffer to store
      the fields it will use for the condition. But if tracing is off, nothing
      is stored in the buffer, and the tracepoint exits before calling the
      trigger to test the condition. This is fine for all the triggers that
      only work when tracing is on, but for traceon trigger that is to
      work when tracing is off, nothing happens.
      
      The fix is simple, just use a temp ring buffer to record the event
      if tracing is off and the event has a trace event conditional trigger
      enabled. The rest of the tracepoint code will work just fine, but
      the tracepoint wont be recorded in the other buffers.
      
      Cc: Tom Zanussi <tom.zanussi@linux.intel.com>
      Signed-off-by: NSteven Rostedt <rostedt@goodmis.org>
      2c4a33ab
    • L
      fs: remove now stale label in anon_inode_init() · fce7fc79
      Linus Torvalds 提交于
      The previous commit removed the register_filesystem() call and the
      associated error handling, but left the label for the error path that no
      longer exists.  Remove that too.
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      fce7fc79
    • J
      fs: Avoid userspace mounting anon_inodefs filesystem · d6f2589a
      Jan Kara 提交于
      anon_inodefs filesystem is a kernel internal filesystem userspace
      shouldn't mess with. Remove registration of it so userspace cannot
      even try to mount it (which would fail anyway because the filesystem is
      MS_NOUSER).
      
      This fixes an oops triggered by trinity when it tried mounting
      anon_inodefs which overwrote anon_inode_inode pointer while other CPU
      has been in anon_inode_getfile() between ihold() and d_instantiate().
      Thus effectively creating dentry pointing to an inode without holding a
      reference to it.
      Reported-by: NSasha Levin <sasha.levin@oracle.com>
      Signed-off-by: NJan Kara <jack@suse.cz>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      d6f2589a
    • L
      Merge branch 'nfsd-next' of git://linux-nfs.org/~bfields/linux · 632b06aa
      Linus Torvalds 提交于
      Pull nfsd fix frm Bruce Fields:
       "J R Okajima sent this early and I was just slow to pass it along,
        apologies.  Fortunately it's a simple fix"
      
      * 'nfsd-next' of git://linux-nfs.org/~bfields/linux:
        nfsd: fix lost nfserrno() call in nfsd_setattr()
      632b06aa
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 3e79d978
      Linus Torvalds 提交于
      Pull vfs fixes from Al Viro:
       "These four commits are obvious fixes (a couple of fdget_pos()-related
        ones from Eric Biggers, prepend_name() fix, missing checks for false
        negatives from __lookup_mnt() in fs/namei.c)"
      
      For now I'm pulling just the four obvious fixes, there's another four
      pending in Al's 'for-linus' branch wrt the mnt_hash list that were more
      involved.
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        rcuwalk: recheck mount_lock after mountpoint crossing attempts
        make prepend_name() work correctly when called with negative *buflen
        vfs: Don't let __fdget_pos() get FMODE_PATH files
        vfs: atomic f_pos access in llseek()
      3e79d978
  5. 25 3月, 2014 13 次提交
    • D
      Revert "xen: properly account for _PAGE_NUMA during xen pte translations" · 5926f87f
      David Vrabel 提交于
      This reverts commit a9c8e4be.
      
      PTEs in Xen PV guests must contain machine addresses if _PAGE_PRESENT
      is set and pseudo-physical addresses is _PAGE_PRESENT is clear.
      
      This is because during a domain save/restore (migration) the page
      table entries are "canonicalised" and uncanonicalised". i.e., MFNs are
      converted to PFNs during domain save so that on a restore the page
      table entries may be rewritten with the new MFNs on the destination.
      This canonicalisation is only done for PTEs that are present.
      
      This change resulted in writing PTEs with MFNs if _PAGE_PROTNONE (or
      _PAGE_NUMA) was set but _PAGE_PRESENT was clear.  These PTEs would be
      migrated as-is which would result in unexpected behaviour in the
      destination domain.  Either a) the MFN would be translated to the
      wrong PFN/page; b) setting the _PAGE_PRESENT bit would clear the PTE
      because the MFN is no longer owned by the domain; or c) the present
      bit would not get set.
      
      Symptoms include "Bad page" reports when munmapping after migrating a
      domain.
      Signed-off-by: NDavid Vrabel <david.vrabel@citrix.com>
      Acked-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Cc: <stable@vger.kernel.org>        [3.12+]
      5926f87f
    • W
      xen/balloon: flush persistent kmaps in correct position · 09ed3d5b
      Wei Liu 提交于
      Xen balloon driver will update ballooned out pages' P2M entries to point
      to scratch page for PV guests. In 24f69373 ("xen/balloon: don't alloc
      page while non-preemptible", kmap_flush_unused was moved after updating
      P2M table. In that case for 32 bit PV guest we might end up with
      
        P2M    X -----> S  (S is mfn of balloon scratch page)
        M2P    Y -----> X  (Y is mfn in persistent kmap entry)
      
      kmap_flush_unused() iterates through all the PTEs in the kmap address
      space, using pte_to_page() to obtain the page. If the p2m and the m2p
      are inconsistent the incorrect page is returned.  This will clear
      page->address on the wrong page which may cause subsequent oopses if
      that page is currently kmap'ed.
      
      Move the flush back between get_page and __set_phys_to_machine to fix
      this.
      Signed-off-by: NWei Liu <wei.liu2@citrix.com>
      Signed-off-by: NDavid Vrabel <david.vrabel@citrix.com>
      Cc: stable@vger.kernel.org # 3.12+
      09ed3d5b
    • L
      Linux 3.14-rc8 · b098d672
      Linus Torvalds 提交于
      b098d672
    • L
      Merge branch 'parisc-3.14' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux · 82231646
      Linus Torvalds 提交于
      Pull parisc updates from Helge Deller:
       - revert parts of the latest patch regarding font selection with STICON
         console
       - wire up the utimes() syscall for parisc
       - remove the unused parisc tmpalias code and unnecessary arch*relax
         defines
      
      * 'parisc-3.14' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
        parisc: locks: remove redundant arch_*_relax operations
        parisc: wire up sys_utimes
        parisc: Remove unused CONFIG_PARISC_TMPALIAS code
        partly revert commit 8a10bc9d: parisc/sti_console: prefer Linux fonts over built-in ROM fonts
      82231646
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc · 56f1f4b2
      Linus Torvalds 提交于
      Pull sparc fixes from David Miller:
      
       1) Do serial locking in a way that makes things clear that these are
          IRQ spinlocks.
      
       2) Conversion to generic idle loop broke first generation Niagara
          machines, need to have %pil interrupts enabled during cpu yield
          hypervisor call.
      
       3) Do not use magic constants for iterations over tsb tables, from Doug
          Wilson.
      
       4) Fix erroneous truncation of 64-bit system call return values to
          32-bit.  From Dave Kleikamp.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
        sparc64: Make sure %pil interrupts are enabled during hypervisor yield.
        sparc64:tsb.c:use array size macro rather than number
        sparc64: don't treat 64-bit syscall return codes as 32-bit
        sparc: serial: Clean up the locking for -rt
      56f1f4b2
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 8a109446
      Linus Torvalds 提交于
      Pull networking fixes from David Miller:
      
       1) OpenVswitch's lookup_datapath() returns error pointers, so don't
          check against NULL.  From Jiri Pirko.
      
       2) pfkey_compile_policy() code path tries to do a GFP_KERNEL allocation
          under RCU locks, fix by using GFP_ATOMIC when necessary.  From
          Nikolay Aleksandrov.
      
       3) phy_suspend() indirectly passes uninitialized data into the ethtool
          get wake-on-land implementations.  Fix from Sebastian Hesselbarth.
      
       4) CPSW driver unregisters CPTS twice, fix from Benedikt Spranger.
      
       5) If SKB allocation of reply packet fails, vxlan's arp_reduce() defers
          a NULL pointer.  Fix from David Stevens.
      
       6) IPV6 neigh handling in vxlan doesn't validate the destination
          address properly, and it builds a packet with the src and dst
          reversed.  Fix also from David Stevens.
      
       7) Fix spinlock recursion during subscription failures in TIPC stack,
          from Erik Hugne.
      
       8) Revert buggy conversion of davinci_emac to devm_request_irq, from
          Chrstian Riesch.
      
       9) Wrong flags passed into forwarding database netlink notifications,
          from Nicolas Dichtel.
      
      10) The netpoll neighbour soliciation handler checks wrong ethertype,
          needs to be ETH_P_IPV6 rather than ETH_P_ARP.  Fix from Li RongQing.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (34 commits)
        tipc: fix spinlock recursion bug for failed subscriptions
        vxlan: fix nonfunctional neigh_reduce()
        net: davinci_emac: Fix rollback of emac_dev_open()
        net: davinci_emac: Replace devm_request_irq with request_irq
        netpoll: fix the skb check in pkt_is_ns
        net: micrel : ks8851-ml: add vdd-supply support
        ip6mr: fix mfc notification flags
        ipmr: fix mfc notification flags
        rtnetlink: fix fdb notification flags
        tcp: syncookies: do not use getnstimeofday()
        netlink: fix setsockopt in mmap examples in documentation
        openvswitch: Correctly report flow used times for first 5 minutes after boot.
        via-rhine: Disable device in error path
        ATHEROS-ATL1E: Convert iounmap to pci_iounmap
        vxlan: fix potential NULL dereference in arp_reduce()
        cnic: Update version to 2.5.20 and copyright year.
        cnic,bnx2i,bnx2fc: Fix inconsistent use of page size
        cnic: Use proper ulp_ops for per device operations.
        net: cdc_ncm: fix control message ordering
        ipv6: ip6_append_data_mtu do not handle the mtu of the second fragment properly
        ...
      8a109446
    • E
      tipc: fix spinlock recursion bug for failed subscriptions · a5d0e7c0
      Erik Hugne 提交于
      If a topology event subscription fails for any reason, such as out
      of memory, max number reached or because we received an invalid
      request the correct behavior is to terminate the subscribers
      connection to the topology server. This is currently broken and
      produces the following oops:
      
      [27.953662] tipc: Subscription rejected, illegal request
      [27.955329] BUG: spinlock recursion on CPU#1, kworker/u4:0/6
      [27.957066]  lock: 0xffff88003c67f408, .magic: dead4ead, .owner: kworker/u4:0/6, .owner_cpu: 1
      [27.958054] CPU: 1 PID: 6 Comm: kworker/u4:0 Not tainted 3.14.0-rc6+ #5
      [27.960230] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
      [27.960874] Workqueue: tipc_rcv tipc_recv_work [tipc]
      [27.961430]  ffff88003c67f408 ffff88003de27c18 ffffffff815c0207 ffff88003de1c050
      [27.962292]  ffff88003de27c38 ffffffff815beec5 ffff88003c67f408 ffffffff817f0a8a
      [27.963152]  ffff88003de27c58 ffffffff815beeeb ffff88003c67f408 ffffffffa0013520
      [27.964023] Call Trace:
      [27.964292]  [<ffffffff815c0207>] dump_stack+0x45/0x56
      [27.964874]  [<ffffffff815beec5>] spin_dump+0x8c/0x91
      [27.965420]  [<ffffffff815beeeb>] spin_bug+0x21/0x26
      [27.965995]  [<ffffffff81083df6>] do_raw_spin_lock+0x116/0x140
      [27.966631]  [<ffffffff815c6215>] _raw_spin_lock_bh+0x15/0x20
      [27.967256]  [<ffffffffa0008540>] subscr_conn_shutdown_event+0x20/0xa0 [tipc]
      [27.968051]  [<ffffffffa000fde4>] tipc_close_conn+0xa4/0xb0 [tipc]
      [27.968722]  [<ffffffffa00101ba>] tipc_conn_terminate+0x1a/0x30 [tipc]
      [27.969436]  [<ffffffffa00089a2>] subscr_conn_msg_event+0x1f2/0x2f0 [tipc]
      [27.970209]  [<ffffffffa0010000>] tipc_receive_from_sock+0x90/0xf0 [tipc]
      [27.970972]  [<ffffffffa000fa79>] tipc_recv_work+0x29/0x50 [tipc]
      [27.971633]  [<ffffffff8105dbf5>] process_one_work+0x165/0x3e0
      [27.972267]  [<ffffffff8105e869>] worker_thread+0x119/0x3a0
      [27.972896]  [<ffffffff8105e750>] ? manage_workers.isra.25+0x2a0/0x2a0
      [27.973622]  [<ffffffff810648af>] kthread+0xdf/0x100
      [27.974168]  [<ffffffff810647d0>] ? kthread_create_on_node+0x1a0/0x1a0
      [27.974893]  [<ffffffff815ce13c>] ret_from_fork+0x7c/0xb0
      [27.975466]  [<ffffffff810647d0>] ? kthread_create_on_node+0x1a0/0x1a0
      
      The recursion occurs when subscr_terminate tries to grab the
      subscriber lock, which is already taken by subscr_conn_msg_event.
      We fix this by checking if the request to establish a new
      subscription was successful, and if not we initiate termination of
      the subscriber after we have released the subscriber lock.
      Signed-off-by: NErik Hugne <erik.hugne@ericsson.com>
      Reviewed-by: NJon Maloy <jon.maloy@ericsson.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a5d0e7c0
    • D
      vxlan: fix nonfunctional neigh_reduce() · 4b29dba9
      David Stevens 提交于
      The VXLAN neigh_reduce() code is completely non-functional since
      check-in. Specific errors:
      
      1) The original code drops all packets with a multicast destination address,
      	even though neighbor solicitations are sent to the solicited-node
      	address, a multicast address. The code after this check was never run.
      2) The neighbor table lookup used the IPv6 header destination, which is the
      	solicited node address, rather than the target address from the
      	neighbor solicitation. So neighbor lookups would always fail if it
      	got this far. Also for L3MISSes.
      3) The code calls ndisc_send_na(), which does a send on the tunnel device.
      	The context for neigh_reduce() is the transmit path, vxlan_xmit(),
      	where the host or a bridge-attached neighbor is trying to transmit
      	a neighbor solicitation. To respond to it, the tunnel endpoint needs
      	to do a *receive* of the appropriate neighbor advertisement. Doing a
      	send, would only try to send the advertisement, encapsulated, to the
      	remote destinations in the fdb -- hosts that definitely did not do the
      	corresponding solicitation.
      4) The code uses the tunnel endpoint IPv6 forwarding flag to determine the
      	isrouter flag in the advertisement. This has nothing to do with whether
      	or not the target is a router, and generally won't be set since the
      	tunnel endpoint is bridging, not routing, traffic.
      
      	The patch below creates a proxy neighbor advertisement to respond to
      neighbor solicitions as intended, providing proper IPv6 support for neighbor
      reduction.
      Signed-off-by: NDavid L Stevens <dlstevens@us.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4b29dba9
    • D
      Merge branch 'davinci_emac' · 866b7cdf
      David S. Miller 提交于
      Christian Riesch says:
      
      ====================
      net: davinci_emac: Fix interrupt requests and error handling
      
      since commit 6892b41d (Linux 3.11) the
      davinci_emac driver is broken. After doing ifconfig down, ifconfig up,
      requesting the interrupts for the driver fails. The interface remains dead
      until the board is rebooted.
      
      The first patch in this patchset reverts commit
      6892b41d partially and makes the driver
      useable again.
      
      During the work on the first patch, a number of bugs in the error handling
      of the driver's ndo_open code were found. The second patch fixes these bugs.
      
      I believe the first patch meets the rules for stable kernels, I therefore added
      the stable tag to this patch. The second patch is just cleanup, the code
      that is fixed by this patch is only executed in case of an error.
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      866b7cdf
    • C
      net: davinci_emac: Fix rollback of emac_dev_open() · cd11cf50
      Christian Riesch 提交于
      If an error occurs during the initialization in emac_dev_open() (the
      driver's ndo_open function), interrupts, DMA descriptors etc. must be freed.
      The current rollback code is buggy in several ways.
      
        1) Freeing the interrupts. The current code will not free all interrupts
           that were requested by the driver. Furthermore,  the code tries to do a
           platform_get_resource(priv->pdev, IORESOURCE_IRQ, -1) in its last
           iteration.
      
           This patch fixes these bugs.
      
        2) Wrong order of err: and rollback: labels. If the setup of the PHY in
           the code fails, the interrupts that have been requested before are
           not freed:
      
              request irq
                      if requesting irqs fails, goto rollback
              setup phy
                      if phy setup fails, goto err
              return 0
      
           rollback:
              free irqs
           err:
      
           This patch brings the code into the correct order.
      
        3) The code calls napi_enable() and emac_int_enable(), but does not
           undo both in case of an error.
      
           This patch adds calls of emac_int_disable() and napi_disable() to the
           rollback code.
      
        4) RX DMA descriptors are not freed in case of an error: Right before
           requesting the irqs, the function creates DMA descriptors for the
           RX channel. These RX descriptors are never freed when we jump to either
           rollback or err.
      
           This patch adds code for freeing the DMA descriptors in the case of
           an initialization error. This required a modification of
           cpdma_ctrl_stop() in davinci_cpdma.c: We must be able to call this
           function to free the DMA descriptors while the DMA channels are
           in IDLE state (before cpdma_ctlr_start() was called).
      
      Tested on a custom board with the Texas Instruments AM1808.
      Signed-off-by: NChristian Riesch <christian.riesch@omicron.at>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      cd11cf50
    • C
      net: davinci_emac: Replace devm_request_irq with request_irq · 33b7107f
      Christian Riesch 提交于
      In commit 6892b41d
      
      Author: Lad, Prabhakar <prabhakar.csengg@gmail.com>
      Date:   Tue Jun 25 21:24:51 2013 +0530
      net: davinci: emac: Convert to devm_* api
      
      the call of request_irq is replaced by devm_request_irq and the call
      of free_irq is removed. But since interrupts are requested in
      emac_dev_open, doing ifconfig up/down on the board requests the
      interrupts again each time, causing devm_request_irq to fail. The
      interface is dead until the device is rebooted.
      
      This patch reverts said commit partially: It changes the driver back
      to use request_irq instead of devm_request_irq, puts free_irq back in
      place, but keeps the remaining changes of the original patch.
      Reported-by: NJon Ringle <jon@ringle.org>
      Signed-off-by: NChristian Riesch <christian.riesch@omicron.at>
      Cc: Lad, Prabhakar <prabhakar.csengg@gmail.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      33b7107f
    • L
      netpoll: fix the skb check in pkt_is_ns · c27f0872
      Li RongQing 提交于
      Neighbor Solicitation is ipv6 protocol, so we should check
      skb->protocol with ETH_P_IPV6
      Signed-off-by: NLi RongQing <roy.qing.li@gmail.com>
      Cc: WANG Cong <amwang@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c27f0872
    • D
      sparc64: Make sure %pil interrupts are enabled during hypervisor yield. · cb3042d6
      David S. Miller 提交于
      In arch_cpu_idle() we must enable %pil based interrupts before
      potentially invoking the hypervisor cpu yield call.
      
      As per the Hypervisor API documentation for cpu_yield:
      
      	Interrupts which are blocked by some mechanism other that
      	pstate.ie (for example %pil) are not guaranteed to cause
      	a return from this service.
      
      It seems that only first generation Niagara chips are hit by this
      bug.  My best guess is that later chips implement this in hardware
      and wake up anyways from %pil events, whereas in first generation
      chips the yield is implemented completely in hypervisor code and
      requires %pil to be enabled in order to wake properly from this
      call.
      
      Fixes: 87fa05ae ("sparc: Use generic idle loop")
      Reported-by: NFabio M. Di Nitto <fabbione@fabbione.net>
      Reported-by: NJan Engelhardt <jengelh@inai.de>
      Tested-by: NJan Engelhardt <jengelh@inai.de>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      cb3042d6
  6. 24 3月, 2014 3 次提交
  7. 23 3月, 2014 6 次提交
    • H
      parisc: wire up sys_utimes · e9af8b7a
      Helge Deller 提交于
      We seem to be nearly the only platform which does not provide the
      sys_utimes syscall.  Adding it now makes our life much easier with
      userspace applications (like dietlibc and e2fsprogs) since we then
      behave like all other platforms too and don't need extra patches which
      are hard to get upstream anyway because we are not a mainstream
      architecture.
      Signed-off-by: NHelge Deller <deller@gmx.de>
      Cc: stable@vger.kernel.org # v3.13
      e9af8b7a
    • J
      parisc: Remove unused CONFIG_PARISC_TMPALIAS code · 4b02a72a
      John David Anglin 提交于
      The attached change removes the unused and experimental
      CONFIG_PARISC_TMPALIAS code. It doesn't work and I don't believe it will
      ever be used.
      Signed-off-by: NJohn David Anglin <dave.anglin@bell.net>
      Signed-off-by: NHelge Deller <deller@gmx.de>
      4b02a72a
    • H
      partly revert commit 8a10bc9d: parisc/sti_console: prefer Linux fonts over built-in ROM fonts · a2fb4d78
      Helge Deller 提交于
      STI console is used on parisc and m68k HP machines. This patch partly reverts
      my previous commit and as such restores the fonts for the m68k machines.
      Signed-off-by: NHelge Deller <deller@gmx.de>
      Cc: stable@vger.kernel.org # v3.13
      a2fb4d78
    • A
      rcuwalk: recheck mount_lock after mountpoint crossing attempts · b37199e6
      Al Viro 提交于
      We can get false negative from __lookup_mnt() if an unrelated vfsmount
      gets moved.  In that case legitimize_mnt() is guaranteed to fail,
      and we will fall back to non-RCU walk... unless we end up running
      into a hard error on a filesystem object we wouldn't have reached
      if not for that false negative.  IOW, delaying that check until
      the end of pathname resolution is wrong - we should recheck right
      after we attempt to cross the mountpoint.  We don't need to recheck
      unless we see d_mountpoint() being true - in that case even if
      we have just raced with mount/umount, we can simply go on as if
      we'd come at the moment when the sucker wasn't a mountpoint; if we
      run into a hard error as the result, it was a legitimate outcome.
      __lookup_mnt() returning NULL is different in that respect, since
      it might've happened due to operation on completely unrelated
      mountpoint.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      b37199e6
    • A
      make prepend_name() work correctly when called with negative *buflen · e825196d
      Al Viro 提交于
      In all callchains leading to prepend_name(), the value left in *buflen
      is eventually discarded unused if prepend_name() has returned a negative.
      So we are free to do what prepend() does, and subtract from *buflen
      *before* checking for underflow (which turns into checking the sign
      of subtraction result, of course).
      
      Cc: stable@vger.kernel.org
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      e825196d
    • E
      vfs: Don't let __fdget_pos() get FMODE_PATH files · 99aea681
      Eric Biggers 提交于
      Commit bd2a31d5 ("get rid of fget_light()") introduced the
      __fdget_pos() function, which returns the resulting file pointer and
      fdput flags combined in an 'unsigned long'.  However, it also changed the
      behavior to return files with FMODE_PATH set, which shouldn't happen
      because read(), write(), lseek(), etc. aren't allowed on such files.
      This commit restores the old behavior.
      
      This regression actually had no effect on read() and write() since
      FMODE_READ and FMODE_WRITE are not set on file descriptors opened with
      O_PATH, but it did cause lseek() on a file descriptor opened with O_PATH
      to fail with ESPIPE rather than EBADF.
      Signed-off-by: NEric Biggers <ebiggers3@gmail.com>
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      99aea681