All of lore.kernel.org
 help / color / mirror / Atom feed
* Linux 3.11-rc4
@ 2013-08-04 21:09 Linus Torvalds
  2013-08-05  2:34 ` O_TMPFILE fs corruption (Re: Linux 3.11-rc4) Andy Lutomirski
  2013-08-05  4:20 ` Linux 3.11-rc4 Felipe Contreras
  0 siblings, 2 replies; 36+ messages in thread
From: Linus Torvalds @ 2013-08-04 21:09 UTC (permalink / raw)
  To: Linux Kernel Mailing List

It's that time of the week again..

 "You apply 339 patches, what do you get
  Another week older and deeper in debt
  Saint Peter don't you call me 'cause I can't go
  I owe my soul to the company store"

I had hoped things would start calming down, but rc4 is pretty much
exactly the same size as rc3 was. That said, the patches seem a bit
more spread out, and less interesting - which is a good thing. Boring
is good. Let's keep it that way, and try to make for fewer patches for
-rc5, ok? Because we are past half-way now, and I really want to see
just fixes.

We've got some arch updates (arm, parisc), but most of this is drivers
(mostly networking, usb and some drm updates). There's also some core
networking changes. And the printk code movement looks big if you
don't do git renames (ie like the patches I upload).

                  Linus

---

Aaro Koskinen (1):
      powerpc/windfarm: Fix noisy slots-fan on Xserve (rm31)

AceLan Kao (2):
      Bluetooth: Add support for Atheros [0cf3:3121]
      Bluetooth: Add support for Atheros [0cf3:e003]

Adam Lee (1):
      Bluetooth: fix wrong use of PTR_ERR() in btusb

Alex Deucher (15):
      drm/radeon: fix audio dto programming on DCE4+
      drm/radeon/dpm: fix display gap programming on SI
      drm/radeon/dpm: fix si_calculate_memory_refresh_rate()
      drm/radeon/dpm: fix powertune handling for pci id 0x6835
      drm/radeon: properly handle cg on asics without UVD
      drm/radeon/atom: fix fb when fetching engine params
      drm/radeon/dpm: fix forcing performance state to low on cayman
      drm/radeon/si: disable cgcg and pg for now
      drm/radeon/dpm: disable cac setup on SI
      drm/radeon/dpm: fix and enable reclocking on SI
      drm/radeon/atom: initialize more atom interpretor elements to 0
      drm: fix 64 bit drm fixed point helpers
      drm/radeon/dpm: fix calculations in
si_calculate_leakage_for_v_and_t_formula
      drm/radeon/dpm: re-enable cac control on SI
      drm/radeon: fix 64 bit divide in SI spm code

Alex Ivanov (1):
      parisc: agp/parisc-agp: allow binding of user memory to the AGP GART

Alex Williamson (3):
      vfio: Don't overreact to DEL_DEVICE
      vfio: Ignore sprurious notifies
      vfio-pci: Avoid deadlock on remove

Alexander Bondar (1):
      iwlwifi: mvm: Fix VIF specific debugfs directory creation

Alexey Khoroshilov (2):
      ath9k_htc: fix data race between request_firmware_nowait()
callback and suspend()
      can: usb_8dev: fix urb leak on failure path in usb_8dev_start()

Andi Shyti (1):
      mlx5_core: Variable may be used uninitialized

Andrew Morton (1):
      arch/x86/platform/ce4100/ce4100.c: include reboot.h

Andrzej Pietrasiewicz (4):
      usb: gadget: ether: put_usb_function on unbind
      usb: gadget: free opts struct on error recovery
      usb: gadget: multi: fix error return code in cdc_do_config()
      usb: gadget: f_phonet: remove unused preprocessor conditional

Arend van Spriel (3):
      brcmfmac: decrement pending 8021x count upon tx failure
      brcmfmac: bail out of brcmf_txflowblock_if() for non-netdev interface
      brcmfmac: inform cfg80211 about disconnect when device is unplugged

Arik Nemtsov (1):
      regulatory: use correct regulatory initiator on wiphy register

Arnaud Patard (2):
      mvneta: Fix hang when loading the mvneta driver
      mvneta: Try to fix mvneta when compiled as module

Arnd Bergmann (1):
      ssb: fix alignment of struct bcma_device_id

Aurelien Chartier (1):
      xenbus: frontend resume cleanup

Avinash Patil (2):
      mwifiex: check for bss_role instead of bss_mode for STA operations
      mwifiex: fix wrong data rates in P2P client

Axel Lin (1):
      serial: arc_uart: Fix module alias

Ben Hutchings (2):
      sfc: Enable RX scatter for flows steered by RFS
      dmi_scan: add comments on dmi_present() and the loop in dmi_scan_machine()

Ben Skeggs (1):
      drm/nouveau/vm: make vm refcount into a kref

Ben Widawsky (1):
      drm/i915: fix missed hunk after GT access breakage

Benjamin Tissoires (1):
      HID: sony: fix HID mapping for PS3 sixaxis controller

Bjorn Helgaas (2):
      PCI: hotplug: Convert to be builtin only, not modular
      PCI: pciehp: Convert pciehp to be builtin only, not modular

Bob Copeland (1):
      ath5k: fix extra set bit in multicast mask

Catalin Marinas (1):
      ARM: 7790/1: Fix deferred mm switch on VIVT processors

Chun-Yeow Yeoh (2):
      nl80211: fix the setting of RSSI threshold value for mesh
      mac80211: prevent the buffering or frame transmission to
non-assoc mesh STA

Clemens Ladisch (1):
      firewire: fix libdc1394/FlyCap2 iso event regression

Colin Cross (1):
      freezer: set PF_SUSPEND_TASK flag on tasks that call freeze_processes

Cong Wang (2):
      net: fix a compile error when CONFIG_NET_LL_RX_POLL is not set
      net: rename CONFIG_NET_LL_RX_POLL to CONFIG_NET_RX_BUSY_POLL

Dan Carpenter (12):
      arcnet: cleanup sizeof parameter
      mlx5: use after free in mlx5_cmd_comp_handler()
      fbdev/atyfb: fix recent breakage in correct_chipset()
      RDMA/cxgb4: Fix stack info leak in c4iw_create_qp()
      RDMA/ocrdma: Fix several stack info leaks
      RDMA/nes: Fix info leaks in nes_create_qp() and nes_create_cq()
      RDMA/cxgb3: Fix stack info leak in iwch_create_cq()
      af_key: more info leaks in pfkey messages
      IB/mlx5: Fix stack info leak in mlx5_ib_alloc_ucontext()
      mlx5_core: Fix use after free in mlx5_cmd_comp_handler()
      rapidio: fix use after free in rio_unregister_scan()
      net_sched: info leak in atm_tc_dump_class()

Daniel Borkmann (1):
      net: rtm_to_ifaddr: free ifa if ifa_cacheinfo processing fails

Daniel Drake (1):
      mwifiex: fix IRQ enable/disable

Dave Kleikamp (1):
      mm: sched: numa: fix NUMA balancing when !SCHED_DEBUG

David S. Miller (2):
      Revert "atl1c: Fix misuse of netdev_alloc_skb in refilling rx ring"
      net_sched: Fix stack info leak in cbq_dump_wrr().

David Spinadel (3):
      iwlwifi: mvm: fix bug in scan ssid
      iwlwifi: mvm: remove extra SSID from probe request
      iwlwifi: mvm: set SSID bits for passive channels

David Vrabel (1):
      xen/evtchn: avoid a deadlock when unbinding an event channel

Denis Kirjanov (1):
      sis900: Fix the tx queue timeout issue

Dimitris Papastamos (1):
      ASoC: wm0010: Fix resource leak

Egbert Eich (4):
      drm/mgag200: Fix logic in mgag200_bo_pin() (v2)
      drm/mgag200: Add an crtc_disable callback to the crtc helper funcs
      drm/mgag200: Add sysfs support for connectors
      drm/mgag200: Fix LUT programming for 16bpp

Eli Cohen (1):
      mlx5_core: Implement new initialization sequence

Emil Tantilov (1):
      igb: fix vlan filtering in promisc mode when not in VT mode

Emil Velikov (2):
      drm/nv50/gpio: post-nv92 cards have 32 interrupt lines
      drm/nv50-/disp: remove dcb_outp_match call, and related variables

Emilio López (1):
      net: sun4i: fix timeout check

Emmanuel Grumbach (6):
      iwlwifi: mvm: unregister leds when registration failed
      iwlwifi: mvm: fix L2P BA ressources leak
      iwlwifi: mvm: track the number of Rx BA sessions
      iwlwifi: add DELL SKU for 5150 HMC
      iwlwifi: pcie: reset the NIC before the bring up
      iwlwifi: pcie: clear RFKILL interrupt in AMPG

Erez Shitrit (1):
      IPoIB: Fix pkey change flow for virtualization environments

Eric Dumazet (4):
      netfilter: xt_socket: fix broken v0 support
      bridge: do not call setup_timer() multiple times
      usbnet: do not pretend to support SG/TSO
      atl1c: Fix misuse of netdev_alloc_skb in refilling rx ring

Fabio Estevam (3):
      fec: Add MODULE_ALIAS
      ARM: 7789/1: Do not run dummy_flush_tlb_a15_erratum() on non-Cortex-A15
      usb: chipidea: cast PORTSC_PTS and DEVLC_PTS macros

Felipe Balbi (1):
      net: ethernet: cpsw: drop IRQF_DISABLED

Felix Fietkau (3):
      mac80211/minstrel_ht: fix cck rate sampling
      mac80211/minstrel: fix NULL pointer dereference issue
      ath9k: fix tx pending frames accounting for dropped packets

Flavio Leitner (1):
      veth: add vlan features

Florian Fainelli (3):
      net: fix comment above build_skb()
      MIPS: BMIPS: do not change interrupt routing depending on boot CPU
      MIPS: BMIPS: fix slave CPU booting when physical CPU is not 0

Francesco Fusco (2):
      neigh: prevent overflowing params in /proc/sys/net/ipv4/neigh/
      sysctl: range checking in do_proc_dointvec_ms_jiffies_conv

Frank Li (1):
      net: fec: workaround stop tx during errata ERR006358

Frederic Danis (1):
      NFC: Fix NCI over SPI build

Gavin Shan (2):
      net/tg3: Fix kernel crash
      net/tg3: Fix warning from pci_disable_device()

Geert Uytterhoeven (2):
      rt2x00: RT2X00 should depend on HAS_DMA
      ath10k: ATH10K should depend on HAS_DMA

Gianluca Anzolin (1):
      tty_port: Fix refcounting leak in tty_port_tty_hangup()

Greg Kroah-Hartman (1):
      USB: serial: add driver for Suunto ANT+ USB device

Grygorii Strashko (1):
      drivers/rtc/rtc-twl.c: fix: rtcX/wakealarm attribute isn't created

Gu Zheng (1):
      ocfs2/refcounttree: add the missing NULL check of the return
value of find_or_create_page()

Gustavo Padovan (1):
      Bluetooth: Fix race between hci_register_dev() and hci_dev_open()

Hannes Frederic Sowa (1):
      ipv6: take rtnl_lock and mark mrt6 table as freed on namespace cleanup

Heesub Shin (1):
      mm: zbud: fix condition check on allocation size

Helge Deller (1):
      parisc: add defconfig for c8000 machine

Himanshu Madhani (3):
      qlcnic: Fix ethtool display for 83xx adapter.
      qlcnic: Free up memory in error path.
      qlcnic: Fix for flash update failure on 83xx adapter

Hugh Dickins (1):
      tmpfs: fix SEEK_DATA/SEEK_HOLE regression

Ilan Peer (1):
      iwlwifi: mvm: Disable managed PS when GO is added

Ilia Mirkin (6):
      drm/nouveau/core: xtensa firmware size needs to be 0x40000 no matter what
      drm/nv50/mc: include vp in the fb error reporting mask
      drm/nv31/mpeg: fix mpeg engine initialization
      drm/nva3-/disp: fix hda eld writing, needs to be padded
      drm/nv40/mpeg: write magic value to channel object to make it work
      drm/nv31/mpeg: don't recognize nv3x cards as having nv44 graph class

Inki Dae (2):
      drm/exynos: fix module build error
      drm/exynos: consider common clock framework to g2d driver.

J. Bruce Fields (4):
      svcrpc: fix gss_rpc_upcall create error
      svcrpc: fix gss-proxy xdr decoding oops
      svcrpc: fix kfree oops in gss-proxy code
      svcrpc: set cr_gss_mech from gss-proxy as well as legacy upcall

Jack Morgenstein (3):
      IB/mlx4: Use default pkey when creating tunnel QPs
      IB/core: Create QP1 using the pkey index which contains the default pkey
      net/mlx4_core: VFs must ignore the enable_64b_cqe_eqe module param

Jacob Keller (1):
      ixgbe: Fix Tx Hang issue with lldpad on 82598EB

Jaganath Kanakkassery (1):
      Bluetooth: Fix invalid length check in l2cap_information_rsp()

Jerry Snitselaar (1):
      fib_trie: potential out of bounds access in trie_show_stats()

Jiri Benc (1):
      ipv6: prevent race between address creation and removal

Jiri Pirko (1):
      ipv6: move peer_addr init into ipv6_add_addr()

Jiri Slaby (1):
      net: pch_gbe depends on x86

Jitendra Kalsaria (2):
      qlcnic: Fix releasing of Tx frag which was never mapped.
      qlcnic: Fix initialization of work function.

Joe Perches (7):
      MAINTAINERS: dynamic debug: Jason's not there...
      printk: move to separate directory for easier modification
      printk: add console_cmdline.h
      printk: move braille console support into separate braille.[ch] files
      printk: use pointer for console_cmdline indexing
      printk: rename struct log to struct printk_log
      ndisc: Add missing inline to ndisc_addr_option_pad

Johan Hedberg (2):
      Bluetooth: Fix HCI init for BlueFRITZ! devices
      Bluetooth: Fix calling request callback more than once

Johan Hovold (4):
      USB: mos7840: fix race in register handling
      USB: mos7840: fix device-type detection
      USB: mos7840: fix race in led handling
      USB: mos7840: fix pointer casts

Johannes Berg (8):
      cfg80211: fix bugs in new SME implementation
      regulatory: add missing rtnl locking
      mac80211: fix ethtool stats for non-station interfaces
      mac80211: fix duplicate retransmission detection
      iwlwifi: dvm: don't send BT_CONFIG on devices w/o Bluetooth
      iwlwifi: mvm: refuse connection to APs with BI < 16
      iwlwifi: mvm: use only a single GTK in D3
      iwlwifi: mvm: fix flushing not started aggregation sessions

John David Anglin (2):
      parisc: Fix cache routines to ignore vma's with an invalid pfn
      parisc: Remove arch/parisc/kernel/sys32.h header

Julien Grall (2):
      xen/arm64: Don't compile cpu hotplug
      xen/arm: enable PV control for ARM

Kalle Valo (2):
      MAINTAINERS: add ath10k
      MAINTAINERS: update ath6kl git location

Kirill A. Shutemov (1):
      thp, mm: avoid PageUnevictable on active/inactive lru lists

Kishon Vijay Abraham I (1):
      usb: musb: fix resource passed from glue layer to musb

Lan Tianyu (1):
      ACPI / battery: Fix parsing _BIX return value

Larry Finger (3):
      rtlwifi: Initialize power-setting callback for USB devices
      rtlwifi: Fix build errors for unusual cases
      ath: wil6210: Fix build error

Lars-Peter Clausen (3):
      ASoC: dapm: Fix return value of snd_soc_dapm_put_{volsw,enum_virt}()
      dma: pl330: Fix cyclic transfers
      ASoC: bf5xx-ac97: Fix compile error with SND_BF5XX_HAVE_COLD_RESET

Lekensteyn (2):
      r8169: fix lockdep warning when removing interface
      r8169: remove "PHY reset until link up" log spam

Linus Lüssing (1):
      bridge: disable snooping if there is no querier

Linus Torvalds (1):
      Linux 3.11-rc4

Linus Walleij (3):
      Revert "gpio/omap: fix build error when OF_GPIO is not defined."
      Revert "gpio/omap: auto request GPIO as input if used as IRQ via DT"
      Revert "gpio/omap: don't create an IRQ mapping for every GPIO on DT"

Luciano Coelho (1):
      MAINTAINERS: change email of TI WiLink drivers' maintainer

Luis Henriques (1):
      vga16fb: Remove unused variable

Maarten Lankhorst (3):
      drm/nouveau: fix null pointer dereference in poll_changed
      drm/nouveau: fix size check for cards without vm
      drm/nouveau: fix semaphore dmabuf obj

Maciej W. Rozycki (1):
      MIPS: uapi/asm/siginfo.h: Fix GCC 4.1.2 compilation

Manish Chopra (4):
      qlcnic: Fix panic while setting VF's MAC address
      qlcnic: Fix guest VLAN
      qlcnic: Fix setting Guest VLAN
      qlcnic: Fix diagnostic interrupt test for 83xx adapters.

Mark Brown (1):
      ASoC: bfin-ac97: Fix prototype error following AC'97 refactoring

Mark Rutland (2):
      ARM: 7786/1: hyp: fix macro parameterisation
      ARM: 7787/1: virt: ensure visibility of __boot_cpu_mode

Markos Chandras (2):
      MIPS: Set default CPU type for BCM47XX platforms
      MIPS: powertv: Fix arguments for free_reserved_area()

Markus Trippelsdorf (1):
      .gitignore: ignore *.lz4 files

Maxime Ripard (2):
      drivers: net: allwinner: Fix Kconfig indentation
      drivers: net: sun4i-emac: select MDIO_SUN4I

Maximilian Schneider (1):
      net: can: esd_usb2: check index of array before accessing

Michael Ellerman (2):
      powerpc: Rename PMU interrupts from CNT to PMI
      powerpc/perf: Export PERF_EVENT_CONFIG_EBB_SHIFT to userspace

Michael S. Tsirkin (2):
      macvlan: better mode validation
      macvlan: handle set_promiscuity failures

Michal Hocko (3):
      vmpressure: change vmpressure::sr_lock to spinlock
      vmpressure: do not check for pending work to prevent from new work
      vmpressure: make sure there are no events queued after memcg is offlined

Michal Kazior (1):
      nl80211: fix mgmt tx status and testmode reporting for netns

Michal Kubeček (2):
      ipv6: prevent fib6_run_gc() contention
      ipv6: update ip6_rt_last_gc every time GC is run

Michal Simek (1):
      video: xilinxfb: Fix compilation warning

Michal Tesar (1):
      sysctl net: Keep tcp_syn_retries inside the boundary

Mike Marciniszyn (1):
      IB/qib: Add err_decode() call for ring dump

Mugunthan V N (1):
      net: ethernet: davinci_emac: drop IRQF_DISABLED

Naoya Horiguchi (1):
      mm/swap.c: clear PageActive before adding pages onto unevictable list

Neil Horman (2):
      atl1c: Fix misuse of netdev_alloc_skb in refilling rx ring
      8139cp: Add dma_mapping_error checking

NeilBrown (1):
      NFSD/sunrpc: avoid deadlock on TCP connection due to memory pressure.

Nestor Lopez Casado (2):
      HID: Revert "Revert "HID: Fix logitech-dj: missing Unifying device issue""
      HID: hid-logitech-dj: querying_devices was never set

Oleg Nesterov (1):
      mm: mempolicy: fix mbind_range() && vma_adjust() interaction

Oleksij Rempel (2):
      ath9k_htc: do some initial hardware configuration
      ath9k_htc: reboot firmware if it was loaded

Or Gerlitz (2):
      IPoIB: Make sure child devices use valid/proper pkeys
      net/mlx4_core: Don't give VFs MAC addresses which are derived
from the PF MAC

Pablo Neira (1):
      genetlink: fix usage of NLM_F_EXCL or NLM_F_REPLACE

Pablo Neira Ayuso (1):
      netfilter: ctnetlink: fix incorrect NAT expectation dumping

Paul Bolle (1):
      RDMA/cma: Fix gcc warning

Paul Moore (1):
      netlabel: use domain based selectors when address based
selectors are not available

Paul Walmsley (1):
      ARM: 7801/1: v6: prevent gcc 4.5 from reordering extended CP15
reads above is_smp() test

Peter Chen (1):
      usb: chipidea: fix the build error with randconfig

Pratik Pujar (3):
      qlcnic: Set __QLCNIC_DEV_UP in adapter state before enabling interrupts
      qlcnic: Fix operation type and command type.
      qlcnic: Removed adapter series name from warning messages.

Rafael J. Wysocki (3):
      Revert "cpuidle: Quickly notice prediction failure in general case"
      Revert "cpuidle: Quickly notice prediction failure for repeat mode"
      cpufreq: Fix cpufreq driver module refcount balance after suspend/resume

Rajesh Borundia (2):
      qlcnic: Fix link speed display for 82xx adapter
      qlcnic: Fix link speed and duplex display for 83xx adapter

Ralf Baechle (1):
      ASoC: au1x: Fix build

Rick Farina (Zero_Chaos) (1):
      USB: serial: ftdi_sio: add more RT Systems ftdi devices

Robert Jennings (1):
      powerpc: VPHN topology change updates all siblings

Roland Dreier (2):
      RDMA/ocrdma: Remove unused include
      Revert "RDMA/nes: Fix compilation error when nes_debug is enabled"

Roman Gushchin (1):
      net: check net.core.somaxconn sysctl values

Rong Wang (1):
      usb: gadget: udc-core: fix the typo of udc state attribute

Roy Spliet (1):
      drm/nvc0/fb: take lock in nvc0_ram_put()

Russell King (14):
      ARM: document DEBUG_UNCOMPRESS Kconfig option
      ARM: 7785/1: mm: restrict early_alloc to section-aligned memory
      ARM: Fix sorting of machine- initializers
      ARM: poison the vectors page
      ARM: poison memory between kuser helpers
      ARM: move vector stubs
      ARM: use linker magic for vectors and vector stubs
      ARM: update FIQ support for relocation of vectors
      ARM: allow kuser helpers to be removed from the vector page
      ARM: move signal handlers into a vdso-like page
      ARM: make vectors page inaccessible from userspace
      ARM: Add .text annotations where required after __CPUINIT removal
      ARM: fix a cockup in 48be69a02 (ARM: move signal handlers into a
vdso-like page)
      ARM: fix nommu builds with 48be69a02 (ARM: move signal handlers
into a vdso-like page)

Sachin Kamat (1):
      drm/exynos: Remove module.h header inclusion

Samuel Ortiz (1):
      NFC: netlink: Rename CMD_FW_UPLOAD to CMD_FW_DOWNLOAD

Sean Hefty (2):
      RDMA/cma: Fix accessing invalid private data for UD
      RDMA/cma: Only call cma_save_ib_info() for CM REQs

Shahed Shaikh (5):
      qlcnic: Fix invalid register offset calculation
      qlcnic: Fix dump template version mask
      qlcnic: Fix MAC address filter issue on 82xx adapter
      qlcnic: Fix ingress MAC learning
      qlcnic: Fix external loopback test.

Solomon Peachy (1):
      cw1200: Fix OOPS in monitor mode

Stanislaw Gruszka (4):
      mac80211: fix monitor interface suspend crash regression
      Bluetooth: ath3k: don't use stack memory for DMA
      genetlink: release cb_lock before requesting additional module
      rt2x00: fix stop queue

Stefano Stabellini (2):
      xen/arm,arm64: update xen_restart after ff701306cd49 and 7b6d864b48d9
      xen/tmem: do not allow XEN_TMEM on ARM64

Stephen Boyd (2):
      gpio_msm: Fix build error due to missing err.h
      ARM: 7803/1: Fix deadlock scenario with smp_send_stop()

Steven J. Hill (1):
      MIPS: Fix multiple definitions of UNCAC_BASE.

Stone Piao (1):
      mwifiex: fix command 0x2c timeout during p2p_find or p2p_connect

Sucheta Chakraborty (2):
      qlcnic: Fix NULL pointer dereference in VF probe path.
      qlcnic: Fix multicast packet handling for PF and VF.

Sujith Manoharan (2):
      ath9k_hw: Fix multicast search for AR9002 family
      Bluetooth: ath3k: Add support for ID 0x13d3/0x3402

Takashi Iwai (2):
      drm/mgag200: Fix framebuffer pitch calculation
      ALSA: hda - Fix missing fixup for Mac Mini with STAC9221

Tetsuyuki Kobayashi (1):
      ARM: 7788/1: elf: fix lpae hwcap feature reporting in proc/cpuinfo

Thomas Bogendoerfer (1):
      parisc: Fix interrupt routing for C8000 serial ports

Thomas Loo (1):
      Bluetooth: ath3k: Add support for Fujitsu Lifebook UH5x2 [04c5:1330]

Thomas Petazzoni (1):
      PCI: mvebu: Disable prefetchable memory support in PCI-to-PCI bridge

Tomasz Moń (1):
      mwifiex: Add missing endian conversion.

Tomi Valkeinen (1):
      fbdev/sgivwfb: fix compilation error in sgivwfb_mmap()

Tony Luck (1):
      x86/mce: Fix mce regression from recent cleanup

Uwe Kleine-König (4):
      serial/mxs-auart: fix race condition in interrupt handler
      serial/mxs-auart: increase time to wait for transmitter to become idle
      net/fec: Don't let ndo_start_xmit return NETDEV_TX_BUSY without link
      ARM: 7800/1: ARMv7-M: Fix name of NVIC handler function

Vineet Gupta (1):
      ARC: SMP build breakage

Vinod Koul (1):
      ALSA: compress: fix the return value for SNDRV_COMPRESS_VERSION

Vivien Didelot (1):
      hwmon: (max6697) fix MAX6581 ideality

Wei Yongjun (6):
      pch_dma: fix error return code in pch_dma_probe()
      video: nuc900fb: fix to pass correct device identity to request_irq()
      video: sh7760fb: fix to pass correct device identity to free_irq()
      drm/exynos: exynos_drm_ipp: fix return value check
      mlx5: fix error return code in mlx5_alloc_uuars()
      IB/mlx5: Fix error return code in init_one()

Will Deacon (2):
      ARM: 7784/1: mm: ensure SMP alternates assemble to exactly 4
bytes with Thumb-2
      ARM: 7791/1: a.out: remove partial a.out support

Ying Xue (1):
      tipc: fix oops when creating server socket fails

Yinghai Lu (2):
      PCI: pciehp: Fix null pointer deref when hot-removing SR-IOV device
      PCI: Retry allocation of only the resource type that failed

Yonghua Zheng (1):
      HID: hidraw: fix improper mutex release

hayeswang (5):
      net/usb/r815x: replace USB buffer from stack to DMA-able
      net/usb/r815x: avoid to call mdio functions for runtime-suspended device
      net/usb/r815x: change the return value for bind functions
      net/usb/r8152: make sure the USB buffer is DMA-able
      net/usb/r8152: adjust relative ocp function

stephen hemminger (3):
      vxlan: unregister on namespace exit
      vxlan: fix igmp races
      htb: fix sign extension bug

^ permalink raw reply	[flat|nested] 36+ messages in thread

* O_TMPFILE fs corruption (Re: Linux 3.11-rc4)
  2013-08-04 21:09 Linux 3.11-rc4 Linus Torvalds
@ 2013-08-05  2:34 ` Andy Lutomirski
  2013-08-05  3:45   ` Linus Torvalds
  2013-08-05  4:20 ` Linux 3.11-rc4 Felipe Contreras
  1 sibling, 1 reply; 36+ messages in thread
From: Andy Lutomirski @ 2013-08-05  2:34 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Linux Kernel Mailing List

On 08/04/2013 02:09 PM, Linus Torvalds wrote:
> It's that time of the week again..

I still get filesystem corruption with O_TMPFILE.  The program below, 
run as flinktest foo proc (or flinktest foo linkat if you're root) will 
produce a bogus inode.  On ext4, once the inode is gone from cache, the 
inode will be impossible to delete and will require a fsck to fix

A patch (not necessarily the appropriate fix) is here:

http://article.gmane.org/gmane.linux.kernel/1537088

--- cut here ---

#include <stdio.h>
#include <err.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>

#define __O_TMPFILE 020000000
#define O_TMPFILE (__O_TMPFILE | O_DIRECTORY)
#define AT_EMPTY_PATH 0x1000

int main(int argc, char **argv)
{
   char buf[128];

   if (argc != 3)
     errx(1, "Usage: flinktest PATH linkat|proc");

   int fd = open(".", O_TMPFILE | O_RDWR, 0600);
   if (fd == -1)
     err(1, "O_TMPFILE");
   write(fd, "test", 4);

   if (!strcmp(argv[2], "linkat")) {
     if (linkat(fd, "", AT_FDCWD, argv[1], AT_EMPTY_PATH) != 0)
       err(1, "linkat");
   } else if (!strcmp(argv[2], "proc")) {
     sprintf(buf, "/proc/self/fd/%d", fd);
     if (linkat(AT_FDCWD, buf, AT_FDCWD, argv[1], AT_SYMLINK_FOLLOW) != 0)
       err(1, "linkat");
   } else {
     errx(1, "invalid mode");
   }
   return 0;
}


^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: O_TMPFILE fs corruption (Re: Linux 3.11-rc4)
  2013-08-05  2:34 ` O_TMPFILE fs corruption (Re: Linux 3.11-rc4) Andy Lutomirski
@ 2013-08-05  3:45   ` Linus Torvalds
  2013-08-05  4:45     ` Andrew Lutomirski
                       ` (2 more replies)
  0 siblings, 3 replies; 36+ messages in thread
From: Linus Torvalds @ 2013-08-05  3:45 UTC (permalink / raw)
  To: Andy Lutomirski, Al Viro; +Cc: Linux Kernel Mailing List

The patch looks right to me - we should pass in similar flags for the
create case as for tmpfile to the filesystem.

But let's make sure we're all on the same page. Al?

                 Linus

On Sun, Aug 4, 2013 at 7:34 PM, Andy Lutomirski <luto@mit.edu> wrote:
> On 08/04/2013 02:09 PM, Linus Torvalds wrote:
>>
>> It's that time of the week again..
>
>
> I still get filesystem corruption with O_TMPFILE.  The program below, run as
> flinktest foo proc (or flinktest foo linkat if you're root) will produce a
> bogus inode.  On ext4, once the inode is gone from cache, the inode will be
> impossible to delete and will require a fsck to fix
>
> A patch (not necessarily the appropriate fix) is here:
>
> http://article.gmane.org/gmane.linux.kernel/1537088
>
> --- cut here ---
>
> #include <stdio.h>
> #include <err.h>
> #include <fcntl.h>
> #include <unistd.h>
> #include <string.h>
>
> #define __O_TMPFILE 020000000
> #define O_TMPFILE (__O_TMPFILE | O_DIRECTORY)
> #define AT_EMPTY_PATH 0x1000
>
> int main(int argc, char **argv)
> {
>   char buf[128];
>
>   if (argc != 3)
>     errx(1, "Usage: flinktest PATH linkat|proc");
>
>   int fd = open(".", O_TMPFILE | O_RDWR, 0600);
>   if (fd == -1)
>     err(1, "O_TMPFILE");
>   write(fd, "test", 4);
>
>   if (!strcmp(argv[2], "linkat")) {
>     if (linkat(fd, "", AT_FDCWD, argv[1], AT_EMPTY_PATH) != 0)
>       err(1, "linkat");
>   } else if (!strcmp(argv[2], "proc")) {
>     sprintf(buf, "/proc/self/fd/%d", fd);
>     if (linkat(AT_FDCWD, buf, AT_FDCWD, argv[1], AT_SYMLINK_FOLLOW) != 0)
>       err(1, "linkat");
>   } else {
>     errx(1, "invalid mode");
>   }
>   return 0;
> }
>

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: Linux 3.11-rc4
  2013-08-04 21:09 Linux 3.11-rc4 Linus Torvalds
  2013-08-05  2:34 ` O_TMPFILE fs corruption (Re: Linux 3.11-rc4) Andy Lutomirski
@ 2013-08-05  4:20 ` Felipe Contreras
  2013-08-05 13:29   ` Oleg Nesterov
                     ` (2 more replies)
  1 sibling, 3 replies; 36+ messages in thread
From: Felipe Contreras @ 2013-08-05  4:20 UTC (permalink / raw)
  To: Linus Torvalds, Oleg Nesterov; +Cc: Linux Kernel Mailing List

On Sun, Aug 4, 2013 at 4:09 PM, Linus Torvalds
<torvalds@linux-foundation.org> wrote:
> It's that time of the week again..
>
>  "You apply 339 patches, what do you get
>   Another week older and deeper in debt
>   Saint Peter don't you call me 'cause I can't go
>   I owe my soul to the company store"
>
> I had hoped things would start calming down, but rc4 is pretty much
> exactly the same size as rc3 was. That said, the patches seem a bit
> more spread out, and less interesting - which is a good thing. Boring
> is good. Let's keep it that way, and try to make for fewer patches for
> -rc5, ok? Because we are past half-way now, and I really want to see
> just fixes.
>
> We've got some arch updates (arm, parisc), but most of this is drivers
> (mostly networking, usb and some drm updates). There's also some core
> networking changes. And the printk code movement looks big if you
> don't do git renames (ie like the patches I upload).

I found a regression while running all v3.11-rcX kernels; Starcract II
through wine crashes. The culprit is fab840f (ptrace: PTRACE_DETACH
should do flush_ptrace_hw_breakpoint(child)), I revert that commit and
there's no crash.

-- 
Felipe Contreras

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: O_TMPFILE fs corruption (Re: Linux 3.11-rc4)
  2013-08-05  3:45   ` Linus Torvalds
@ 2013-08-05  4:45     ` Andrew Lutomirski
  2013-08-05  8:26     ` Christoph Hellwig
  2013-08-05 14:31     ` Al Viro
  2 siblings, 0 replies; 36+ messages in thread
From: Andrew Lutomirski @ 2013-08-05  4:45 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Al Viro, Linux Kernel Mailing List

On Sun, Aug 4, 2013 at 8:45 PM, Linus Torvalds
<torvalds@linux-foundation.org> wrote:
> The patch looks right to me - we should pass in similar flags for the
> create case as for tmpfile to the filesystem.

Alternatively, in case anyone ever wants to add more O_TMPFILE-related
flags, open could return -EINVAL if __O_TMPFILE is set and mode
contains bits outside S_IALLUGO.  Given the ABI discussion about
O_TMPFILE, this might be useful some day.

--Andy

>
> But let's make sure we're all on the same page. Al?
>
>                  Linus
>
> On Sun, Aug 4, 2013 at 7:34 PM, Andy Lutomirski <luto@mit.edu> wrote:
>> On 08/04/2013 02:09 PM, Linus Torvalds wrote:
>>>
>>> It's that time of the week again..
>>
>>
>> I still get filesystem corruption with O_TMPFILE.  The program below, run as
>> flinktest foo proc (or flinktest foo linkat if you're root) will produce a
>> bogus inode.  On ext4, once the inode is gone from cache, the inode will be
>> impossible to delete and will require a fsck to fix
>>
>> A patch (not necessarily the appropriate fix) is here:
>>
>> http://article.gmane.org/gmane.linux.kernel/1537088
>>
>> --- cut here ---
>>
>> #include <stdio.h>
>> #include <err.h>
>> #include <fcntl.h>
>> #include <unistd.h>
>> #include <string.h>
>>
>> #define __O_TMPFILE 020000000
>> #define O_TMPFILE (__O_TMPFILE | O_DIRECTORY)
>> #define AT_EMPTY_PATH 0x1000
>>
>> int main(int argc, char **argv)
>> {
>>   char buf[128];
>>
>>   if (argc != 3)
>>     errx(1, "Usage: flinktest PATH linkat|proc");
>>
>>   int fd = open(".", O_TMPFILE | O_RDWR, 0600);
>>   if (fd == -1)
>>     err(1, "O_TMPFILE");
>>   write(fd, "test", 4);
>>
>>   if (!strcmp(argv[2], "linkat")) {
>>     if (linkat(fd, "", AT_FDCWD, argv[1], AT_EMPTY_PATH) != 0)
>>       err(1, "linkat");
>>   } else if (!strcmp(argv[2], "proc")) {
>>     sprintf(buf, "/proc/self/fd/%d", fd);
>>     if (linkat(AT_FDCWD, buf, AT_FDCWD, argv[1], AT_SYMLINK_FOLLOW) != 0)
>>       err(1, "linkat");
>>   } else {
>>     errx(1, "invalid mode");
>>   }
>>   return 0;
>> }
>>

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: O_TMPFILE fs corruption (Re: Linux 3.11-rc4)
  2013-08-05  3:45   ` Linus Torvalds
  2013-08-05  4:45     ` Andrew Lutomirski
@ 2013-08-05  8:26     ` Christoph Hellwig
  2013-08-05 16:04       ` Jörn Engel
  2013-08-05 14:31     ` Al Viro
  2 siblings, 1 reply; 36+ messages in thread
From: Christoph Hellwig @ 2013-08-05  8:26 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Andy Lutomirski, Al Viro, Linux Kernel Mailing List

On Sun, Aug 04, 2013 at 08:45:16PM -0700, Linus Torvalds wrote:
> The patch looks right to me - we should pass in similar flags for the
> create case as for tmpfile to the filesystem.
> 
> But let's make sure we're all on the same page. Al?

Given all the problems and very limited fs support I'd much prefer
disabling O_TMPFILE for this release.  That'd give it the needed
exposure it was missing by being merged without any previous public
review.


^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: Linux 3.11-rc4
  2013-08-05  4:20 ` Linux 3.11-rc4 Felipe Contreras
@ 2013-08-05 13:29   ` Oleg Nesterov
  2013-08-05 14:27     ` Felipe Contreras
  2013-08-05 17:39     ` Linus Torvalds
  2013-08-05 18:46   ` Oleg Nesterov
  2013-08-06 15:43   ` [PATCH 0/1] (Was: Linux 3.11-rc4) Oleg Nesterov
  2 siblings, 2 replies; 36+ messages in thread
From: Oleg Nesterov @ 2013-08-05 13:29 UTC (permalink / raw)
  To: Felipe Contreras; +Cc: Linus Torvalds, Linux Kernel Mailing List

On 08/04, Felipe Contreras wrote:
>
> I found a regression while running all v3.11-rcX kernels; Starcract II
> through wine crashes.

Thanks... just to clarify, Starcract crashes, wine or kernel?

> The culprit is fab840f (ptrace: PTRACE_DETACH
> should do flush_ptrace_hw_breakpoint(child)), I revert that commit and
> there's no crash.

I never used wine, but I am puzzled anyway. This patch really looks
like a simple and minor bugfix.

Could you please run wine under strace

	strace -f -e ptrace -o LOG wine ...

and show the result?

Oleg.


^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: Linux 3.11-rc4
  2013-08-05 13:29   ` Oleg Nesterov
@ 2013-08-05 14:27     ` Felipe Contreras
  2013-08-05 14:39       ` Oleg Nesterov
  2013-08-05 17:39     ` Linus Torvalds
  1 sibling, 1 reply; 36+ messages in thread
From: Felipe Contreras @ 2013-08-05 14:27 UTC (permalink / raw)
  To: Oleg Nesterov; +Cc: Linus Torvalds, Linux Kernel Mailing List

On Mon, Aug 5, 2013 at 8:29 AM, Oleg Nesterov <oleg@redhat.com> wrote:
> On 08/04, Felipe Contreras wrote:
>>
>> I found a regression while running all v3.11-rcX kernels; Starcract II
>> through wine crashes.
>
> Thanks... just to clarify, Starcract crashes, wine or kernel?

It's Starcraft. In fact, it detects the crash and tries to send a bug
report to Blizzard, the company behind it.

>> The culprit is fab840f (ptrace: PTRACE_DETACH
>> should do flush_ptrace_hw_breakpoint(child)), I revert that commit and
>> there's no crash.
>
> I never used wine, but I am puzzled anyway. This patch really looks
> like a simple and minor bugfix.
>
> Could you please run wine under strace
>
>         strace -f -e ptrace -o LOG wine ...
>
> and show the result?

Sure. Note that the crash might have happened some time before the end
of the log.

951   +++ exited with 0 +++
952   +++ exited with 0 +++
950   --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=952,
si_status=0, si_utime=0, si_stime=0} ---
954   +++ exited with 0 +++
956   +++ exited with 0 +++
955   --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=956,
si_status=0, si_utime=0, si_stime=0} ---
958   +++ exited with 0 +++
955   --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=958,
si_status=0, si_utime=0, si_stime=0} ---
962   +++ exited with 0 +++
959   --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=962,
si_status=0, si_utime=0, si_stime=0} ---
961   +++ exited with 0 +++
970   +++ exited with 0 +++
959   --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=970,
si_status=0, si_utime=0, si_stime=0} ---
965   +++ exited with 0 +++
977   +++ exited with 0 +++
957   --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=977,
si_status=0, si_utime=0, si_stime=0} ---
955   +++ exited with 0 +++
950   --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=954,
si_status=0, si_utime=0, si_stime=0} ---
980   --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
988   +++ exited with 0 +++
986   --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=988,
si_status=0, si_utime=0, si_stime=0} ---
993   +++ exited with 0 +++
989   --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=993,
si_status=0, si_utime=0, si_stime=0} ---
995   +++ exited with 0 +++
992   +++ exited with 0 +++
989   +++ exited with 0 +++
1009  +++ exited with 0 +++
1010  +++ exited with 0 +++
1011  +++ exited with 0 +++
1012  +++ exited with 0 +++
1013  +++ exited with 0 +++
1014  +++ exited with 0 +++
1016  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1016  +++ exited with 0 +++
1018  +++ exited with 0 +++
1020  +++ exited with 0 +++
1021  +++ exited with 0 +++
1022  +++ exited with 0 +++
974   +++ exited with 0 +++
1023  +++ exited with 0 +++
1025  +++ exited with 0 +++
1005  --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=1025,
si_status=0, si_utime=0, si_stime=0} ---
1027  +++ exited with 0 +++
1029  +++ exited with 0 +++
980   +++ exited with 0 +++
986   +++ exited with 0 +++
1032  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1032  +++ exited with 0 +++
1034  +++ exited with 0 +++
1026  --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=1034,
si_status=0, si_utime=0, si_stime=0} ---
1036  +++ exited with 0 +++
983   +++ exited with 0 +++
984   +++ exited with 0 +++
991   +++ exited with 0 +++
1031  +++ exited with 0 +++
981   +++ exited with 0 +++
985   --- SIGQUIT {si_signo=SIGQUIT, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
982   +++ exited with 0 +++
985   +++ exited with 0 +++
987   +++ exited with 0 +++
990   +++ exited with 0 +++
1030  +++ exited with 0 +++
950   +++ exited with 0 +++
1033  +++ exited with 0 +++
1026  +++ exited with 0 +++
957   +++ exited with 0 +++
1037  +++ exited with 0 +++
953   ptrace(PTRACE_ATTACH, 1035, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1035, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1035, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1035, 0, 0) = -1 EPERM (Operation not permitted)
1041  +++ exited with 0 +++
953   ptrace(PTRACE_ATTACH, 1035, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1035, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1035, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1035, 0, 0) = -1 EPERM (Operation not permitted)
1047  +++ exited with 0 +++
953   ptrace(PTRACE_ATTACH, 1035, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1035, 0, 0) = -1 EPERM (Operation not permitted)
1049  +++ exited with 0 +++
1050  +++ exited with 0 +++
1051  +++ exited with 0 +++
1052  +++ exited with 0 +++
1053  +++ exited with 0 +++
1054  +++ exited with 0 +++
1028  +++ exited with 0 +++
1056  +++ exited with 0 +++
1057  +++ exited with 0 +++
953   ptrace(PTRACE_ATTACH, 1035, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1035, 0, 0) = -1 EPERM (Operation not permitted)
1060  +++ exited with 0 +++
953   ptrace(PTRACE_ATTACH, 1035, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1035, 0, 0) = -1 EPERM (Operation not permitted)
1061  +++ exited with 0 +++
1062  +++ exited with 0 +++
953   ptrace(PTRACE_ATTACH, 1035, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1035, 0, 0) = -1 EPERM (Operation not permitted)
1063  +++ exited with 0 +++
953   ptrace(PTRACE_ATTACH, 1035, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1035, 0, 0) = -1 EPERM (Operation not permitted)
1064  +++ exited with 0 +++
1066  +++ exited with 0 +++
953   ptrace(PTRACE_ATTACH, 1035, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1035, 0, 0) = -1 EPERM (Operation not permitted)
1067  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1067  +++ exited with 0 +++
1069  +++ exited with 0 +++
953   ptrace(PTRACE_ATTACH, 1035, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1035, 0, 0) = -1 EPERM (Operation not permitted)
1070  +++ exited with 0 +++
1071  +++ exited with 0 +++
1072  +++ exited with 0 +++
1073  +++ exited with 0 +++
1074  +++ exited with 0 +++
1075  +++ exited with 0 +++
1076  +++ exited with 0 +++
1077  +++ exited with 0 +++
1078  +++ exited with 0 +++
1079  +++ exited with 0 +++
1080  +++ exited with 0 +++
1081  +++ exited with 0 +++
1082  +++ exited with 0 +++
1087  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1086  +++ exited with 0 +++
1090  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1035, 0, 0) = -1 EPERM (Operation not permitted)
1091  +++ exited with 0 +++
953   ptrace(PTRACE_ATTACH, 1035, 0, 0) = -1 EPERM (Operation not permitted)
1093  +++ exited with 0 +++
1094  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1095  +++ exited with 0 +++
1096  +++ exited with 0 +++
1097  +++ exited with 0 +++
1090  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1098  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1098  +++ exited with 0 +++
1099  +++ exited with 0 +++
1100  +++ exited with 0 +++
1101  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1101  +++ exited with 0 +++
1103  +++ exited with 0 +++
1104  +++ exited with 0 +++
1090  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1105  +++ exited with 0 +++
1106  +++ exited with 0 +++
1107  +++ exited with 0 +++
1108  +++ exited with 0 +++
1109  +++ exited with 0 +++
1110  +++ exited with 0 +++
1111  +++ exited with 0 +++
1112  +++ exited with 0 +++
1090  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1113  +++ exited with 0 +++
1114  +++ exited with 0 +++
1115  +++ exited with 0 +++
1116  +++ exited with 0 +++
1117  +++ exited with 0 +++
1122  +++ exited with 0 +++
1123  +++ exited with 0 +++
968   +++ exited with 0 +++
966   +++ exited with 0 +++
1124  +++ exited with 0 +++
1125  +++ exited with 0 +++
1126  +++ exited with 0 +++
1127  +++ exited with 0 +++
1090  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1039  +++ exited with 0 +++
1128  +++ exited with 0 +++
1129  +++ exited with 0 +++
1130  +++ exited with 0 +++
1131  +++ exited with 0 +++
1132  +++ exited with 0 +++
1133  +++ exited with 0 +++
1134  +++ exited with 0 +++
998   +++ exited with 0 +++
1135  +++ exited with 0 +++
1136  +++ exited with 0 +++
1137  +++ exited with 0 +++
1138  +++ exited with 0 +++
1090  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1090  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1141  +++ exited with 0 +++
1102  +++ exited with 0 +++
1142  +++ exited with 0 +++
1085  +++ exited with 0 +++
1143  +++ exited with 0 +++
1090  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1002  +++ exited with 0 +++
1090  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1087  +++ exited with 0 +++
1144  +++ exited with 0 +++
1084  +++ exited with 0 +++
1083  +++ exited with 0 +++
953   ptrace(PTRACE_ATTACH, 1035, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1035, 0, 0) = -1 EPERM (Operation not permitted)
1145  +++ exited with 0 +++
1090  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1147  +++ exited with 0 +++
1024  +++ exited with 0 +++
1148  +++ exited with 0 +++
1152  +++ exited with 0 +++
1006  --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=1152,
si_status=0, si_utime=0, si_stime=0} ---
1154  +++ exited with 0 +++
1156  +++ exited with 0 +++
1157  +++ exited with 0 +++
1158  +++ exited with 0 +++
1153  --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=1158,
si_status=0, si_utime=0, si_stime=0} ---
953   ptrace(PTRACE_ATTACH, 1153, 0, 0) = -1 EPERM (Operation not permitted)
1160  +++ exited with 0 +++
1161  +++ exited with 0 +++
1162  +++ exited with 0 +++
1164  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1164, 0, 0) = -1 EPERM (Operation not permitted)
1163  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1163, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1094  +++ exited with 0 +++
1167  +++ exited with 0 +++
1046  +++ exited with 0 +++
1042  +++ exited with 0 +++
1048  +++ exited with 0 +++
1035  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1035  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1035  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1035  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1035  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1035  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1035  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1035  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1038  --- SIGQUIT {si_signo=SIGQUIT, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1038  +++ exited with 0 +++
1040  +++ exited with 0 +++
1043  +++ exited with 0 +++
1044  +++ exited with 0 +++
1045  +++ exited with 0 +++
1055  +++ exited with 0 +++
1059  +++ exited with 0 +++
1065  +++ exited with 0 +++
1068  +++ exited with 0 +++
1146  +++ exited with 0 +++
1035  +++ exited with 0 +++
953   ptrace(PTRACE_ATTACH, 1153, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1153, 0, 0) = -1 EPERM (Operation not permitted)
1090  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1155  +++ exited with 0 +++
1173  +++ exited with 0 +++
1153  +++ exited with 0 +++
1159  --- SIGILL {si_signo=SIGILL, si_code=ILL_ILLOPN, si_addr=0x3d406bbe} ---
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1200  --- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_ACCERR,
si_addr=0x7dd8c14f} ---
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1201  +++ exited with 0 +++
1200  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1200, 0, 0) = -1 EPERM (Operation not permitted)
1199  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1199, 0, 0) = -1 EPERM (Operation not permitted)
1198  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1198, 0, 0) = -1 EPERM (Operation not permitted)
1197  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1197, 0, 0) = -1 EPERM (Operation not permitted)
1196  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1196, 0, 0) = -1 EPERM (Operation not permitted)
1195  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1195, 0, 0) = -1 EPERM (Operation not permitted)
1194  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1194, 0, 0) = -1 EPERM (Operation not permitted)
1193  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1193, 0, 0) = -1 EPERM (Operation not permitted)
1192  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1192, 0, 0) = -1 EPERM (Operation not permitted)
1191  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1191, 0, 0) = -1 EPERM (Operation not permitted)
1190  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1190, 0, 0) = -1 EPERM (Operation not permitted)
1189  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1189, 0, 0) = -1 EPERM (Operation not permitted)
1188  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1188, 0, 0) = -1 EPERM (Operation not permitted)
1187  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1187, 0, 0) = -1 EPERM (Operation not permitted)
1186  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1186, 0, 0) = -1 EPERM (Operation not permitted)
1185  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1185, 0, 0) = -1 EPERM (Operation not permitted)
1184  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1184, 0, 0) = -1 EPERM (Operation not permitted)
1183  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1183, 0, 0) = -1 EPERM (Operation not permitted)
1182  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1182, 0, 0) = -1 EPERM (Operation not permitted)
1181  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1181, 0, 0) = -1 EPERM (Operation not permitted)
1180  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1180, 0, 0) = -1 EPERM (Operation not permitted)
1179  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1179, 0, 0) = -1 EPERM (Operation not permitted)
1178  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1178, 0, 0) = -1 EPERM (Operation not permitted)
1177  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1177, 0, 0) = -1 EPERM (Operation not permitted)
1176  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1176, 0, 0) = -1 EPERM (Operation not permitted)
1175  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1175, 0, 0) = -1 EPERM (Operation not permitted)
1174  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1174, 0, 0) = -1 EPERM (Operation not permitted)
1172  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1172, 0, 0) = -1 EPERM (Operation not permitted)
1171  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1171, 0, 0) = -1 EPERM (Operation not permitted)
1170  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1170, 0, 0) = -1 EPERM (Operation not permitted)
1169  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1169, 0, 0) = -1 EPERM (Operation not permitted)
1168  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1168, 0, 0) = -1 EPERM (Operation not permitted)
1166  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1166, 0, 0) = -1 EPERM (Operation not permitted)
1165  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1165, 0, 0) = -1 EPERM (Operation not permitted)
1164  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1164, 0, 0) = -1 EPERM (Operation not permitted)
1163  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1163, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1200  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1199  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1198  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1197  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1196  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1195  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1194  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1193  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1192  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1191  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1190  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1189  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1188  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1187  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1186  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1185  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1184  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1183  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1182  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1181  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1180  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1179  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1178  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1177  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1176  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1175  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1174  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1172  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1171  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1170  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1169  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1168  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1166  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1165  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1164  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1163  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1200, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1199, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1198, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1197, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1196, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1195, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1194, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1193, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1192, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1191, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1190, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1189, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1188, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1187, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1186, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1185, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1184, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1183, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1182, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1181, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1180, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1179, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1178, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1177, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1176, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1175, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1174, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1172, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1171, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1170, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1169, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1168, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1166, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1165, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1164, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1163, 0, 0) = -1 EPERM (Operation not permitted)
1200  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1200, 0, 0) = -1 EPERM (Operation not permitted)
1199  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1199, 0, 0) = -1 EPERM (Operation not permitted)
1198  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1198, 0, 0) = -1 EPERM (Operation not permitted)
1197  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1197, 0, 0) = -1 EPERM (Operation not permitted)
1196  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1196, 0, 0) = -1 EPERM (Operation not permitted)
1195  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1195, 0, 0) = -1 EPERM (Operation not permitted)
1194  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1194, 0, 0) = -1 EPERM (Operation not permitted)
1193  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1193, 0, 0) = -1 EPERM (Operation not permitted)
1192  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1192, 0, 0) = -1 EPERM (Operation not permitted)
1191  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1191, 0, 0) = -1 EPERM (Operation not permitted)
1190  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1190, 0, 0) = -1 EPERM (Operation not permitted)
1189  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1189, 0, 0) = -1 EPERM (Operation not permitted)
1188  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1188, 0, 0) = -1 EPERM (Operation not permitted)
1187  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1187, 0, 0) = -1 EPERM (Operation not permitted)
1186  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1186, 0, 0) = -1 EPERM (Operation not permitted)
1185  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1185, 0, 0) = -1 EPERM (Operation not permitted)
1184  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1184, 0, 0) = -1 EPERM (Operation not permitted)
1183  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1183, 0, 0) = -1 EPERM (Operation not permitted)
1182  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1182, 0, 0) = -1 EPERM (Operation not permitted)
1181  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1181, 0, 0) = -1 EPERM (Operation not permitted)
1180  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1180, 0, 0) = -1 EPERM (Operation not permitted)
1179  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1179, 0, 0) = -1 EPERM (Operation not permitted)
1178  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1178, 0, 0) = -1 EPERM (Operation not permitted)
1177  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1177, 0, 0) = -1 EPERM (Operation not permitted)
1176  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1176, 0, 0) = -1 EPERM (Operation not permitted)
1175  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1175, 0, 0) = -1 EPERM (Operation not permitted)
1174  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1174, 0, 0) = -1 EPERM (Operation not permitted)
1172  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1172, 0, 0) = -1 EPERM (Operation not permitted)
1171  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1171, 0, 0) = -1 EPERM (Operation not permitted)
1170  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1170, 0, 0) = -1 EPERM (Operation not permitted)
1169  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1169, 0, 0) = -1 EPERM (Operation not permitted)
1168  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1168, 0, 0) = -1 EPERM (Operation not permitted)
1166  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1166, 0, 0) = -1 EPERM (Operation not permitted)
1165  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1165, 0, 0) = -1 EPERM (Operation not permitted)
1164  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1164, 0, 0) = -1 EPERM (Operation not permitted)
1163  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1163, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1204  +++ exited with 0 +++
1202  +++ exited with 0 +++
1203  +++ exited with 0 +++
1207  +++ exited with 0 +++
1205  +++ exited with 0 +++
1206  +++ exited with 0 +++
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1200  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1200, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1199  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1199, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1198  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1198, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1197  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1197, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1196  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1196, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1195  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1195, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1194  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1194, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1193  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1193, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1192  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1192, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1191  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1191, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1190  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1190, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1189  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1189, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1188  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1188, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1187  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1187, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1186  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1186, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1185  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1185, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1184  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1184, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1183  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1183, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1182  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1182, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1181  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1181, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1180  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1180, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1179  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1179, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1178  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1178, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1177  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1177, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1176  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1176, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1175  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1175, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1174  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1174, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1172  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1172, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1171  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1171, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1170  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1170, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1169  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1169, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1168  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1168, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1166  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1166, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1165  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1165, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1163  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1163, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1159  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
953   ptrace(PTRACE_ATTACH, 1159, 0, 0) = -1 EPERM (Operation not permitted)
1208  +++ exited with 0 +++
1159  --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=1208,
si_status=0, si_utime=0, si_stime=0} ---
1163  +++ exited with 0 +++
1164  +++ exited with 0 +++
1165  +++ exited with 0 +++
1166  +++ exited with 0 +++
1169  --- SIGQUIT {si_signo=SIGQUIT, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1168  +++ exited with 0 +++
1169  +++ exited with 0 +++
1170  +++ exited with 0 +++
1171  +++ exited with 0 +++
1172  +++ exited with 0 +++
1174  +++ exited with 0 +++
1175  +++ exited with 0 +++
1176  +++ exited with 0 +++
1178  +++ exited with 0 +++
1180  +++ exited with 0 +++
1177  +++ exited with 0 +++
1179  +++ exited with 0 +++
1181  +++ exited with 0 +++
1182  +++ exited with 0 +++
1183  +++ exited with 0 +++
1184  --- SIGQUIT {si_signo=SIGQUIT, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1184  +++ exited with 0 +++
1185  +++ exited with 0 +++
1186  +++ exited with 0 +++
1187  +++ exited with 0 +++
1188  +++ exited with 0 +++
1189  +++ exited with 0 +++
1190  +++ exited with 0 +++
1191  +++ exited with 0 +++
1192  +++ exited with 0 +++
1193  +++ exited with 0 +++
1194  +++ exited with 0 +++
1195  +++ exited with 0 +++
1196  +++ exited with 0 +++
1197  +++ exited with 0 +++
1198  +++ exited with 0 +++
1199  +++ exited with 0 +++
1200  +++ exited with 0 +++
1159  +++ exited with 0 +++
1090  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1210  --- SIGQUIT {si_signo=SIGQUIT, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1210  +++ exited with 0 +++
1209  +++ exited with 0 +++
1000  +++ exited with 0 +++
1150  +++ exited with 0 +++
1151  +++ exited with 0 +++
1007  +++ exited with 0 +++
1003  +++ exited with 0 +++
1004  +++ exited with 0 +++
1005  +++ exited with 0 +++
1006  +++ exited with 0 +++
1008  +++ exited with 0 +++
1058  +++ exited with 0 +++
1015  +++ exited with 0 +++
1017  +++ exited with 0 +++
1019  +++ exited with 0 +++
1001  +++ exited with 0 +++
996   +++ exited with 0 +++
1092  +++ exited with 0 +++
1090  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1090  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1090  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1090  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1090  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1090  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1090  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1090  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1090  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1090  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1090  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1090  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1090  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1090  --- SIGUSR1 {si_signo=SIGUSR1, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1088  +++ exited with 0 +++
1090  +++ exited with 0 +++
1140  +++ exited with 0 +++
1139  +++ exited with 0 +++
1089  +++ exited with 0 +++
997   +++ exited with 0 +++
999   +++ exited with 0 +++
1212  --- SIGQUIT {si_signo=SIGQUIT, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
1211  +++ exited with 0 +++
1212  +++ exited with 0 +++
994   +++ exited with 0 +++
979   +++ exited with 0 +++
978   +++ exited with 0 +++
976   +++ exited with 0 +++
975   --- SIGQUIT {si_signo=SIGQUIT, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
975   +++ exited with 0 +++
971   +++ exited with 0 +++
967   --- SIGQUIT {si_signo=SIGQUIT, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
969   +++ exited with 0 +++
972   --- SIGQUIT {si_signo=SIGQUIT, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
967   +++ exited with 0 +++
972   +++ exited with 0 +++
973   +++ exited with 0 +++
963   +++ exited with 0 +++
964   --- SIGQUIT {si_signo=SIGQUIT, si_code=SI_TKILL, si_pid=953,
si_uid=1000} ---
960   +++ exited with 0 +++
964   +++ exited with 0 +++
1149  +++ exited with 0 +++
1213  +++ exited with 0 +++
1214  +++ exited with 0 +++
1215  +++ exited with 0 +++
959   +++ exited with 0 +++
953   +++ exited with 0 +++

-- 
Felipe Contreras

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: O_TMPFILE fs corruption (Re: Linux 3.11-rc4)
  2013-08-05  3:45   ` Linus Torvalds
  2013-08-05  4:45     ` Andrew Lutomirski
  2013-08-05  8:26     ` Christoph Hellwig
@ 2013-08-05 14:31     ` Al Viro
  2 siblings, 0 replies; 36+ messages in thread
From: Al Viro @ 2013-08-05 14:31 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Andy Lutomirski, Linux Kernel Mailing List

On Sun, Aug 04, 2013 at 08:45:16PM -0700, Linus Torvalds wrote:
> The patch looks right to me - we should pass in similar flags for the
> create case as for tmpfile to the filesystem.
> 
> But let's make sure we're all on the same page. Al?

ACK.  It used to happen as a side effect of O_CREAT being required
in the flags, but that broke once we switched to use of O_DIRECTORY.

I've applied both Andi's patches (along with one from Zheng Liu) in
vfs.git #for-linus.  Another thing in there is reiserfs umount
deadlock fix - that one needs to go in all branches starting from
2.6.23.

Please, pull from the usual place -
git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git for-linus

Shortlog:
Al Viro (1):
      reiserfs: fix deadlock in umount

Andy Lutomirski (2):
      fs: Fix file mode for O_TMPFILE
      fs: Allow unprivileged linkat(..., AT_EMPTY_PATH) aka flink

Zheng Liu (1):
      vfs: add missing check for __O_TMPFILE in fcntl_init()

Diffstat:
 fs/fcntl.c           |    4 +-
 fs/namei.c           |   10 ++----
 fs/open.c            |    2 +-
 fs/reiserfs/procfs.c |   99 ++++++++++----------------------------------------
 fs/reiserfs/super.c  |    3 +-
 5 files changed, 26 insertions(+), 92 deletions(-)

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: Linux 3.11-rc4
  2013-08-05 14:27     ` Felipe Contreras
@ 2013-08-05 14:39       ` Oleg Nesterov
  2013-08-05 17:02         ` Felipe Contreras
  0 siblings, 1 reply; 36+ messages in thread
From: Oleg Nesterov @ 2013-08-05 14:39 UTC (permalink / raw)
  To: Felipe Contreras; +Cc: Linus Torvalds, Linux Kernel Mailing List

On 08/05, Felipe Contreras wrote:
>
> On Mon, Aug 5, 2013 at 8:29 AM, Oleg Nesterov <oleg@redhat.com> wrote:
> >
> > Could you please run wine under strace
> >
> >         strace -f -e ptrace -o LOG wine ...
> >
> > and show the result?
>
> Sure.

Thanks.

> Note that the crash might have happened some time before the end
> of the log.

Hmm. It should not crash under strace... please see below.

> 953   ptrace(PTRACE_ATTACH, 1035, 0, 0) = -1 EPERM (Operation not permitted)

OK, so it actually uses ptrace ;)

PTRACE_ATTACH fails because this child is already traced by strace, I guess.

So does Starcraft crash this way? Or does it fail in some other way?

And just in case... perhaps wine does some logging too?

Oleg.


^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: O_TMPFILE fs corruption (Re: Linux 3.11-rc4)
  2013-08-05  8:26     ` Christoph Hellwig
@ 2013-08-05 16:04       ` Jörn Engel
  0 siblings, 0 replies; 36+ messages in thread
From: Jörn Engel @ 2013-08-05 16:04 UTC (permalink / raw)
  To: Christoph Hellwig
  Cc: Linus Torvalds, Andy Lutomirski, Al Viro, Linux Kernel Mailing List

On Mon, 5 August 2013 01:26:46 -0700, Christoph Hellwig wrote:
> On Sun, Aug 04, 2013 at 08:45:16PM -0700, Linus Torvalds wrote:
> > The patch looks right to me - we should pass in similar flags for the
> > create case as for tmpfile to the filesystem.
> > 
> > But let's make sure we're all on the same page. Al?
> 
> Given all the problems and very limited fs support I'd much prefer
> disabling O_TMPFILE for this release.  That'd give it the needed
> exposure it was missing by being merged without any previous public
> review.

Agreed.  This has not been in -next at all.  It is not an urgent
security thing or regression fix, so there is no good excuse for
avoiding the normal process.

Jörn

--
For a successful technology, reality must take precedence over public
relations, for nature cannot be fooled.
-- Richard Feynman

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: Linux 3.11-rc4
  2013-08-05 14:39       ` Oleg Nesterov
@ 2013-08-05 17:02         ` Felipe Contreras
  2013-08-05 17:11           ` Oleg Nesterov
  0 siblings, 1 reply; 36+ messages in thread
From: Felipe Contreras @ 2013-08-05 17:02 UTC (permalink / raw)
  To: Oleg Nesterov; +Cc: Linus Torvalds, Linux Kernel Mailing List

On Mon, Aug 5, 2013 at 9:39 AM, Oleg Nesterov <oleg@redhat.com> wrote:
> On 08/05, Felipe Contreras wrote:
>>
>> On Mon, Aug 5, 2013 at 8:29 AM, Oleg Nesterov <oleg@redhat.com> wrote:
>> >
>> > Could you please run wine under strace
>> >
>> >         strace -f -e ptrace -o LOG wine ...
>> >
>> > and show the result?
>>
>> Sure.
>
> Thanks.
>
>> Note that the crash might have happened some time before the end
>> of the log.
>
> Hmm. It should not crash under strace... please see below.
>
>> 953   ptrace(PTRACE_ATTACH, 1035, 0, 0) = -1 EPERM (Operation not permitted)
>
> OK, so it actually uses ptrace ;)
>
> PTRACE_ATTACH fails because this child is already traced by strace, I guess.
>
> So does Starcraft crash this way? Or does it fail in some other way?

It's crashing just the same.

> And just in case... perhaps wine does some logging too?

Yeah, but there doesn't seem to be anything interesting:

http://bugs.winehq.org/attachment.cgi?id=45489

-- 
Felipe Contreras

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: Linux 3.11-rc4
  2013-08-05 17:02         ` Felipe Contreras
@ 2013-08-05 17:11           ` Oleg Nesterov
  2013-08-05 17:40             ` Felipe Contreras
  0 siblings, 1 reply; 36+ messages in thread
From: Oleg Nesterov @ 2013-08-05 17:11 UTC (permalink / raw)
  To: Felipe Contreras; +Cc: Linus Torvalds, Linux Kernel Mailing List

On 08/05, Felipe Contreras wrote:
>
> On Mon, Aug 5, 2013 at 9:39 AM, Oleg Nesterov <oleg@redhat.com> wrote:
> >
> > Hmm. It should not crash under strace... please see below.
> >
> >> 953   ptrace(PTRACE_ATTACH, 1035, 0, 0) = -1 EPERM (Operation not permitted)
> >
> > OK, so it actually uses ptrace ;)
> >
> > PTRACE_ATTACH fails because this child is already traced by strace, I guess.
> >
> > So does Starcraft crash this way? Or does it fail in some other way?
>
> It's crashing just the same.

But then it is not clear how fab840f can make any difference.

wine can not use ptrace when it runs after "strace -f". But, to remind,
I know nothing about wine. Perhaps wine uses some daemons which actually
run/ptrace the workload?

> > And just in case... perhaps wine does some logging too?
>
> Yeah, but there doesn't seem to be anything interesting:
>
> http://bugs.winehq.org/attachment.cgi?id=45489

at least there is certainly nothing interesting for me since
I don't understand this ;) Thanks.

Oleg.


^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: Linux 3.11-rc4
  2013-08-05 13:29   ` Oleg Nesterov
  2013-08-05 14:27     ` Felipe Contreras
@ 2013-08-05 17:39     ` Linus Torvalds
  2013-08-05 17:43       ` Felipe Contreras
  2013-08-05 17:47       ` Oleg Nesterov
  1 sibling, 2 replies; 36+ messages in thread
From: Linus Torvalds @ 2013-08-05 17:39 UTC (permalink / raw)
  To: Oleg Nesterov; +Cc: Felipe Contreras, Linux Kernel Mailing List

On Mon, Aug 5, 2013 at 6:29 AM, Oleg Nesterov <oleg@redhat.com> wrote:
>
> I never used wine, but I am puzzled anyway. This patch really looks
> like a simple and minor bugfix.

The patch is indeed trivial, but.. What's the locking here?

Afaik, ptrace_detach() by the parent can race with do_exit() by the
child, and they now _both_ do flush_ptrace_hw_breakpoint(). Or am I
wrong? We have that whole "get tasklist_lock for writing and then
check child->ptrace" logic there exactly due to that race, no?

That said, Felipe, can you double-check that it's not timing-related
in some subtle way, and test multiple times with just that commit
reverted (and not reverted) to make sure that it's 100% that one
single line by that particular commit? Because it does seem very
benign..

               Linus

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: Linux 3.11-rc4
  2013-08-05 17:11           ` Oleg Nesterov
@ 2013-08-05 17:40             ` Felipe Contreras
  2013-08-05 17:56               ` Oleg Nesterov
  0 siblings, 1 reply; 36+ messages in thread
From: Felipe Contreras @ 2013-08-05 17:40 UTC (permalink / raw)
  To: Oleg Nesterov; +Cc: Linus Torvalds, Linux Kernel Mailing List

On Mon, Aug 5, 2013 at 12:11 PM, Oleg Nesterov <oleg@redhat.com> wrote:
> On 08/05, Felipe Contreras wrote:
>>
>> On Mon, Aug 5, 2013 at 9:39 AM, Oleg Nesterov <oleg@redhat.com> wrote:
>> >
>> > Hmm. It should not crash under strace... please see below.
>> >
>> >> 953   ptrace(PTRACE_ATTACH, 1035, 0, 0) = -1 EPERM (Operation not permitted)
>> >
>> > OK, so it actually uses ptrace ;)
>> >
>> > PTRACE_ATTACH fails because this child is already traced by strace, I guess.
>> >
>> > So does Starcraft crash this way? Or does it fail in some other way?
>>
>> It's crashing just the same.
>
> But then it is not clear how fab840f can make any difference.

Yeah, it's very strange.

> wine can not use ptrace when it runs after "strace -f". But, to remind,
> I know nothing about wine. Perhaps wine uses some daemons which actually
> run/ptrace the workload?

There's this thing called wineserver, I'm not exactly sure how it would affect.

But I found this:

http://askubuntu.com/questions/146160/what-is-the-ptrace-scope-workaround-for-wine-programs-and-are-there-any-risks

Would it be possible to just revert that patch for v3.11, and fix it later?

-- 
Felipe Contreras

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: Linux 3.11-rc4
  2013-08-05 17:39     ` Linus Torvalds
@ 2013-08-05 17:43       ` Felipe Contreras
  2013-08-05 18:08         ` Felipe Contreras
  2013-08-05 17:47       ` Oleg Nesterov
  1 sibling, 1 reply; 36+ messages in thread
From: Felipe Contreras @ 2013-08-05 17:43 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Oleg Nesterov, Linux Kernel Mailing List

On Mon, Aug 5, 2013 at 12:39 PM, Linus Torvalds
<torvalds@linux-foundation.org> wrote:

> That said, Felipe, can you double-check that it's not timing-related
> in some subtle way, and test multiple times with just that commit
> reverted (and not reverted) to make sure that it's 100% that one
> single line by that particular commit? Because it does seem very
> benign..

I tested perhaps dozens of times with the patch, and every one of them
failed. I tested at least 6 times with the patch reverted, every one
of them worked.

I'm fairly certain that it's 100% reproducible, so it doesn't seem to be a race.

But I'll double-check.

-- 
Felipe Contreras

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: Linux 3.11-rc4
  2013-08-05 17:39     ` Linus Torvalds
  2013-08-05 17:43       ` Felipe Contreras
@ 2013-08-05 17:47       ` Oleg Nesterov
  1 sibling, 0 replies; 36+ messages in thread
From: Oleg Nesterov @ 2013-08-05 17:47 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Felipe Contreras, Linux Kernel Mailing List

On 08/05, Linus Torvalds wrote:
>
> On Mon, Aug 5, 2013 at 6:29 AM, Oleg Nesterov <oleg@redhat.com> wrote:
> >
> > I never used wine, but I am puzzled anyway. This patch really looks
> > like a simple and minor bugfix.
>
> The patch is indeed trivial, but.. What's the locking here?
>
> Afaik, ptrace_detach() by the parent can race with do_exit() by the
> child, and they now _both_ do flush_ptrace_hw_breakpoint().

That would be bad. And that is why exit_ptrace() doesn't do this.

But we rely on ptrace_freeze_traced(). If the child can exit (or
even run), we have other problems which were hopefully fixed by
9899d11f "ensure arch_ptrace/ptrace_request can never race with
SIGKILL"

> We have that whole "get tasklist_lock for writing and then
> check child->ptrace" logic there exactly due to that race, no?

Exactly. But note that this code is very old. We can remove the
"This child can be already killed" logic, and we can do more
simplifications in ptrace paths.

In fact, some recent changes already rely on the fact the tracee
can't go away, say ptrace_peek_siginfo()->spin_lock_irq(siglock)
is not safe without ptrace_freeze_traced().

Oleg.


^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: Linux 3.11-rc4
  2013-08-05 17:40             ` Felipe Contreras
@ 2013-08-05 17:56               ` Oleg Nesterov
  0 siblings, 0 replies; 36+ messages in thread
From: Oleg Nesterov @ 2013-08-05 17:56 UTC (permalink / raw)
  To: Felipe Contreras; +Cc: Linus Torvalds, Linux Kernel Mailing List

On 08/05, Felipe Contreras wrote:
>
> Would it be possible to just revert that patch for v3.11, and fix it later?

Sure, but it would be nice to investigate.

I think we have the time for revert, this patch was added after 3.10
so I hope we can always revert it before 3.11.

Felipe, I'll try to make a stupid debugging patch tomorrow, perhaps
you can test it...

Oleg.


^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: Linux 3.11-rc4
  2013-08-05 17:43       ` Felipe Contreras
@ 2013-08-05 18:08         ` Felipe Contreras
  0 siblings, 0 replies; 36+ messages in thread
From: Felipe Contreras @ 2013-08-05 18:08 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Oleg Nesterov, Linux Kernel Mailing List

On Mon, Aug 5, 2013 at 12:43 PM, Felipe Contreras
<felipe.contreras@gmail.com> wrote:
> On Mon, Aug 5, 2013 at 12:39 PM, Linus Torvalds
> <torvalds@linux-foundation.org> wrote:
>
>> That said, Felipe, can you double-check that it's not timing-related
>> in some subtle way, and test multiple times with just that commit
>> reverted (and not reverted) to make sure that it's 100% that one
>> single line by that particular commit? Because it does seem very
>> benign..
>
> I tested perhaps dozens of times with the patch, and every one of them
> failed. I tested at least 6 times with the patch reverted, every one
> of them worked.
>
> I'm fairly certain that it's 100% reproducible, so it doesn't seem to be a race.
>
> But I'll double-check.

Yeah, I just tested 5 times; with the patch all 5 times failed,
without the patch all 5 times worked.

-- 
Felipe Contreras

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: Linux 3.11-rc4
  2013-08-05  4:20 ` Linux 3.11-rc4 Felipe Contreras
  2013-08-05 13:29   ` Oleg Nesterov
@ 2013-08-05 18:46   ` Oleg Nesterov
  2013-08-05 18:54     ` Linus Torvalds
  2013-08-06 15:43   ` [PATCH 0/1] (Was: Linux 3.11-rc4) Oleg Nesterov
  2 siblings, 1 reply; 36+ messages in thread
From: Oleg Nesterov @ 2013-08-05 18:46 UTC (permalink / raw)
  To: Felipe Contreras; +Cc: Linus Torvalds, Linux Kernel Mailing List

On 08/04, Felipe Contreras wrote:
>
> I found a regression while running all v3.11-rcX kernels; Starcract II
> through wine crashes. The culprit is fab840f (ptrace: PTRACE_DETACH
> should do flush_ptrace_hw_breakpoint(child)), I revert that commit and
> there's no crash.

Heh. I pulled wine-git.

set_thread_context() does a lot of PTRACE_POKEUSER requests and then
it calls resume_after_ptrace() which simply does PTRACE_DETACH.

I'll recheck tomorrow, but it really looks as if it _wants_ to leak
the debug registers after detach. And more, it does PTRACE_ATTACH
only to set these regs.

And this is exactly what fab840f tries to prevent.

Oleg.


^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: Linux 3.11-rc4
  2013-08-05 18:46   ` Oleg Nesterov
@ 2013-08-05 18:54     ` Linus Torvalds
  2013-08-05 18:57       ` Oleg Nesterov
  0 siblings, 1 reply; 36+ messages in thread
From: Linus Torvalds @ 2013-08-05 18:54 UTC (permalink / raw)
  To: Oleg Nesterov; +Cc: Felipe Contreras, Linux Kernel Mailing List

On Mon, Aug 5, 2013 at 11:46 AM, Oleg Nesterov <oleg@redhat.com> wrote:
>
> Heh. I pulled wine-git.
>
> set_thread_context() does a lot of PTRACE_POKEUSER requests and then
> it calls resume_after_ptrace() which simply does PTRACE_DETACH.
>
> I'll recheck tomorrow, but it really looks as if it _wants_ to leak
> the debug registers after detach. And more, it does PTRACE_ATTACH
> only to set these regs.
>
> And this is exactly what fab840f tries to prevent.

Ok, so I guess it's effectively the ABI, and we should just make the
rule be that "if you don't want stale breakpoints, then remove the
breakpoints when you detach".

And thus reverting it the right thing to do. Agreed?

               Linus

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: Linux 3.11-rc4
  2013-08-05 18:54     ` Linus Torvalds
@ 2013-08-05 18:57       ` Oleg Nesterov
  2013-08-05 19:06         ` Linus Torvalds
  0 siblings, 1 reply; 36+ messages in thread
From: Oleg Nesterov @ 2013-08-05 18:57 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Felipe Contreras, Linux Kernel Mailing List

On 08/05, Linus Torvalds wrote:
>
> On Mon, Aug 5, 2013 at 11:46 AM, Oleg Nesterov <oleg@redhat.com> wrote:
> >
> > Heh. I pulled wine-git.
> >
> > set_thread_context() does a lot of PTRACE_POKEUSER requests and then
> > it calls resume_after_ptrace() which simply does PTRACE_DETACH.
> >
> > I'll recheck tomorrow, but it really looks as if it _wants_ to leak
> > the debug registers after detach. And more, it does PTRACE_ATTACH
> > only to set these regs.
> >
> > And this is exactly what fab840f tries to prevent.
>
> Ok, so I guess it's effectively the ABI, and we should just make the
> rule be that "if you don't want stale breakpoints, then remove the
> breakpoints when you detach".

I'm afraid yes.

> And thus reverting it the right thing to do. Agreed?

Yes, yes, sure. I'll write the changelog and send git-revert tomorrow,
unless you do it yourself.

Oleg.


^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: Linux 3.11-rc4
  2013-08-05 18:57       ` Oleg Nesterov
@ 2013-08-05 19:06         ` Linus Torvalds
  0 siblings, 0 replies; 36+ messages in thread
From: Linus Torvalds @ 2013-08-05 19:06 UTC (permalink / raw)
  To: Oleg Nesterov; +Cc: Felipe Contreras, Linux Kernel Mailing List

On Mon, Aug 5, 2013 at 11:57 AM, Oleg Nesterov <oleg@redhat.com> wrote:
>
> Yes, yes, sure. I'll write the changelog and send git-revert tomorrow,

Thanks.

            Linus

^ permalink raw reply	[flat|nested] 36+ messages in thread

* [PATCH 0/1] (Was: Linux 3.11-rc4)
  2013-08-05  4:20 ` Linux 3.11-rc4 Felipe Contreras
  2013-08-05 13:29   ` Oleg Nesterov
  2013-08-05 18:46   ` Oleg Nesterov
@ 2013-08-06 15:43   ` Oleg Nesterov
  2013-08-06 15:43     ` [PATCH 1/1] Revert "ptrace: PTRACE_DETACH should do flush_ptrace_hw_breakpoint(child)" Oleg Nesterov
  2013-08-07 12:05     ` [PATCH 0/1] (Was: Linux 3.11-rc4) Grazvydas Ignotas
  2 siblings, 2 replies; 36+ messages in thread
From: Oleg Nesterov @ 2013-08-06 15:43 UTC (permalink / raw)
  To: Linus Torvalds, Felipe Contreras, Grazvydas Ignotas
  Cc: Linux Kernel Mailing List, Frederic Weisbecker, Ingo Molnar,
	Denys Vlasenko

Felipe, thanks a lot. Yes fab840f is wrong, this "bug" is already
used as a feature.

Grazvydas, I cc'ed you because I do not really understand
set_thread_context(). It does a couple of extra PTRACE_POKEUSER's
with the "Linux 2.6.33+ needs ..." comment. It would be nice if you
can check if 3.11 still needs this, in this case we probably need
some more minor fixes in this area.

In fact the first comment doesn't look right, when I look at 2.6.33
it seems that POKEUSER(DR0-DR6) should be fine without POKEUSER(DR7),
but this doesn't really matter and I can be easily wrong. Anyway
this looks like a workaround to hide kernel bugs, I will appreciate
it if you can tell if wine still needs it or not.

Oleg.


^ permalink raw reply	[flat|nested] 36+ messages in thread

* [PATCH 1/1] Revert "ptrace: PTRACE_DETACH should do flush_ptrace_hw_breakpoint(child)"
  2013-08-06 15:43   ` [PATCH 0/1] (Was: Linux 3.11-rc4) Oleg Nesterov
@ 2013-08-06 15:43     ` Oleg Nesterov
  2013-08-07 12:05     ` [PATCH 0/1] (Was: Linux 3.11-rc4) Grazvydas Ignotas
  1 sibling, 0 replies; 36+ messages in thread
From: Oleg Nesterov @ 2013-08-06 15:43 UTC (permalink / raw)
  To: Linus Torvalds, Felipe Contreras, Grazvydas Ignotas
  Cc: Linux Kernel Mailing List, Frederic Weisbecker, Ingo Molnar,
	Denys Vlasenko

This reverts commit fab840fc2d542fabcab903db8e03589a6702ba5f.

This commit even has the test-case to prove that the tracee
can be killed by SIGTRAP if the debugger does not remove the
breakpoints before PTRACE_DETACH.

However, this is exactly what wineserver deliberately does,
set_thread_context() calls PTRACE_ATTACH + PTRACE_DETACH just
for PTRACE_POKEUSER(DR*) in between.

So we should revert this fix and document that PTRACE_DETACH
should keep the breakpoints.

Reported-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
---
 kernel/ptrace.c |    1 -
 1 files changed, 0 insertions(+), 1 deletions(-)

diff --git a/kernel/ptrace.c b/kernel/ptrace.c
index 4041f57..a146ee3 100644
--- a/kernel/ptrace.c
+++ b/kernel/ptrace.c
@@ -469,7 +469,6 @@ static int ptrace_detach(struct task_struct *child, unsigned int data)
 	/* Architecture-specific hardware disable .. */
 	ptrace_disable(child);
 	clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE);
-	flush_ptrace_hw_breakpoint(child);
 
 	write_lock_irq(&tasklist_lock);
 	/*
-- 
1.5.5.1



^ permalink raw reply related	[flat|nested] 36+ messages in thread

* Re: [PATCH 0/1] (Was: Linux 3.11-rc4)
  2013-08-06 15:43   ` [PATCH 0/1] (Was: Linux 3.11-rc4) Oleg Nesterov
  2013-08-06 15:43     ` [PATCH 1/1] Revert "ptrace: PTRACE_DETACH should do flush_ptrace_hw_breakpoint(child)" Oleg Nesterov
@ 2013-08-07 12:05     ` Grazvydas Ignotas
  2013-08-07 17:22       ` Oleg Nesterov
  2013-08-07 19:26       ` Linus Torvalds
  1 sibling, 2 replies; 36+ messages in thread
From: Grazvydas Ignotas @ 2013-08-07 12:05 UTC (permalink / raw)
  To: Oleg Nesterov
  Cc: Linus Torvalds, Felipe Contreras, Linux Kernel Mailing List,
	Frederic Weisbecker, Ingo Molnar, Denys Vlasenko

On Tue, Aug 6, 2013 at 6:43 PM, Oleg Nesterov <oleg@redhat.com> wrote:
> Felipe, thanks a lot. Yes fab840f is wrong, this "bug" is already
> used as a feature.
>
> Grazvydas, I cc'ed you because I do not really understand
> set_thread_context(). It does a couple of extra PTRACE_POKEUSER's
> with the "Linux 2.6.33+ needs ..." comment. It would be nice if you
> can check if 3.11 still needs this, in this case we probably need
> some more minor fixes in this area.
>
> In fact the first comment doesn't look right, when I look at 2.6.33
> it seems that POKEUSER(DR0-DR6) should be fine without POKEUSER(DR7),
> but this doesn't really matter and I can be easily wrong. Anyway
> this looks like a workaround to hide kernel bugs, I will appreciate
> it if you can tell if wine still needs it or not.

It's not that wine needs all this, it's the Windows games that use
debug registers to store random values to them for their copy
protection stuff. Older Linux kernels used to not care, but newer ones
started validating what's written to debug registers, and those games
started to break under wine. My wine commits try to sidestep these
kernel restrictions/sanity checking.

Personally I'd say the kernel should not limit what's written to debug
registers. Why can't I write insane values to registers in _my_
hardware? It's not like it's going to break the hardware or anything.

-- 
Gražvydas

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH 0/1] (Was: Linux 3.11-rc4)
  2013-08-07 12:05     ` [PATCH 0/1] (Was: Linux 3.11-rc4) Grazvydas Ignotas
@ 2013-08-07 17:22       ` Oleg Nesterov
  2013-08-07 19:26       ` Linus Torvalds
  1 sibling, 0 replies; 36+ messages in thread
From: Oleg Nesterov @ 2013-08-07 17:22 UTC (permalink / raw)
  To: Grazvydas Ignotas
  Cc: Linus Torvalds, Felipe Contreras, Linux Kernel Mailing List,
	Frederic Weisbecker, Ingo Molnar, Denys Vlasenko

On 08/07, Grazvydas Ignotas wrote:
>
> It's not that wine needs all this, it's the Windows games that use
> debug registers to store random values to them for their copy
> protection stuff.

Thanks.

> My wine commits try to sidestep these
> kernel restrictions/sanity checking.

My point was, it seems that starting from 3.11 you can remove both
extra PTRACE_POKEUSER's. Unless, of course, the initial state of dr7
doesn't match dr0 - dr6 set_thread_context() is going to update.

Anyway I agree this interface is very confusing and inconvenient.

And just in case, it is not that I think set_thread_context() should
be changed, I am just wondering whether the kernel still has the bugs
which should be fixed.

> Personally I'd say the kernel should not limit what's written to debug
> registers. Why can't I write insane values to registers in _my_
> hardware? It's not like it's going to break the hardware or anything.

Even if this is safe (and btw I have no idea if this is always true or
not ;), how a user can notice the error then?

Oleg.


^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH 0/1] (Was: Linux 3.11-rc4)
  2013-08-07 12:05     ` [PATCH 0/1] (Was: Linux 3.11-rc4) Grazvydas Ignotas
  2013-08-07 17:22       ` Oleg Nesterov
@ 2013-08-07 19:26       ` Linus Torvalds
  2013-08-07 19:27         ` Oleg Nesterov
  1 sibling, 1 reply; 36+ messages in thread
From: Linus Torvalds @ 2013-08-07 19:26 UTC (permalink / raw)
  To: Grazvydas Ignotas
  Cc: Oleg Nesterov, Felipe Contreras, Linux Kernel Mailing List,
	Frederic Weisbecker, Ingo Molnar, Denys Vlasenko

On Wed, Aug 7, 2013 at 5:05 AM, Grazvydas Ignotas <notasas@gmail.com> wrote:
>
> Personally I'd say the kernel should not limit what's written to debug
> registers. Why can't I write insane values to registers in _my_
> hardware? It's not like it's going to break the hardware or anything.

It may be your hardware, but do you know what might be running on it?
It's a security issue: setting debug traps on kernel code/data
addresses can not only leak information, it can cause serious trouble
(taking a debug trap on the first instruction of an NMI handler etc)
including kernel stack corruption...

You do want the kernel to give you file permission checking even
though it's "your machine", don't you? Very similar thing.

The fact that windows allows it is kind of irrelevant. They aren't
exactly known for caring deeply.

               Linus

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH 0/1] (Was: Linux 3.11-rc4)
  2013-08-07 19:26       ` Linus Torvalds
@ 2013-08-07 19:27         ` Oleg Nesterov
  2013-08-07 19:47           ` Linus Torvalds
  0 siblings, 1 reply; 36+ messages in thread
From: Oleg Nesterov @ 2013-08-07 19:27 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Grazvydas Ignotas, Felipe Contreras, Linux Kernel Mailing List,
	Frederic Weisbecker, Ingo Molnar, Denys Vlasenko

On 08/07, Linus Torvalds wrote:
>
> It's a security issue: setting debug traps on kernel code/data
> addresses can not only leak information, it can cause serious trouble
> (taking a debug trap on the first instruction of an NMI handler etc)
> including kernel stack corruption...

I guess Grazvydas only meant the "unnecessary" align/len/type checks.

But you are right of course.

Oleg.


^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH 0/1] (Was: Linux 3.11-rc4)
  2013-08-07 19:27         ` Oleg Nesterov
@ 2013-08-07 19:47           ` Linus Torvalds
  2013-08-08 15:41             ` Oleg Nesterov
  0 siblings, 1 reply; 36+ messages in thread
From: Linus Torvalds @ 2013-08-07 19:47 UTC (permalink / raw)
  To: Oleg Nesterov
  Cc: Grazvydas Ignotas, Felipe Contreras, Linux Kernel Mailing List,
	Frederic Weisbecker, Ingo Molnar, Denys Vlasenko

On Wed, Aug 7, 2013 at 12:27 PM, Oleg Nesterov <oleg@redhat.com> wrote:
>
> I guess Grazvydas only meant the "unnecessary" align/len/type checks.

Yeah, some of them may be a bit questionable, but we don't necessarily
know what each microarchitecture does for unsupported ("undefined")
situations.

Intel actually has a lot of errata for their CPU's that they won't
fix, and they tend to be all about exactly the kinds of things that
the architecture manuals say "don't do this". Things like "TSS segment
crosses a page, and you take a page fault in the middle of a task
switch" etc.

Now, I do agree that the debug registers are *much* less likely to
have those kinds of really subtle issues, so maybe relaxing some of
the tests might be reasonable. I'd be a bit nervous about it, but if
it's *only* the length/alignment, and Intel people can be convinced
that it doesn't result in any nasty undefined behavior (as long as the
address is in user space), maybe we could make that change just to
make it easier for Wine.

But the kernel address checking definitely needs to stay around for
security reasons.

                Linus

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH 0/1] (Was: Linux 3.11-rc4)
  2013-08-07 19:47           ` Linus Torvalds
@ 2013-08-08 15:41             ` Oleg Nesterov
  2013-08-08 16:25               ` Linus Torvalds
  2013-08-08 16:54               ` Frederic Weisbecker
  0 siblings, 2 replies; 36+ messages in thread
From: Oleg Nesterov @ 2013-08-08 15:41 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Grazvydas Ignotas, Felipe Contreras, Linux Kernel Mailing List,
	Frederic Weisbecker, Ingo Molnar, Denys Vlasenko

On 08/07, Linus Torvalds wrote:
>
> Now, I do agree that the debug registers are *much* less likely to
> have those kinds of really subtle issues, so maybe relaxing some of
> the tests might be reasonable. I'd be a bit nervous about it, but if
> it's *only* the length/alignment, and Intel people can be convinced
> that it doesn't result in any nasty undefined behavior (as long as the
> address is in user space), maybe we could make that change just to
> make it easier for Wine.

Oh, I do not know. And again, this way a user can't notice the problem
if the arguments are wrong.

But personally I think it would be nice to cleanup the perf interface,
although probably it is too later.

On x86 execute breakpoints are only a single byte, which has to be
the first byte of the instruction. IOW the hardware requires len = 1
in dr7 or it doesn't work (iirc).

But for some reason perf requires bp_len = sizeof(long), not 1. And
note that it sets info->len = X86_BREAKPOINT_LEN_X. The comment says:

	x86 inst breakpoints need to have a specific undefined len

but despite its "special" name LEN_X is simply LEN_1, and other code
relies on this fact.

Now, ptrace correctly requires DR_LEN_1. So arch_bp_generic_fields()
translates this into "gen_len = sizeof(long)" for validation.

arch_build_bp_info() thinks that X86_BREAKPOINT_EXECUTE should have
->bp_len == sizeof(long), so we translate it back into LEN_1 internally.

This looks confusing, imho. And imho X86_BREAKPOINT_LEN_X should die.

> But the kernel address checking definitely needs to stay around for
> security reasons.

Sure. And btw it doesn't look right. I sent the patch below twice (iirc),
perhaps I should resend it again.

Oleg.


Date: Fri, 9 Nov 2012 19:29:43 +0100
Subject: [PATCH] arch_check_bp_in_kernelspace: fix the range check

arch_check_bp_in_kernelspace() tries to avoid the overflow and does 2
TASK_SIZE checks but it needs OR, not AND. Consider va = TASK_SIZE -1
and len = 2 case.

Note: TASK_SIZE doesn't look right at least on x86, I think it should
be replaced by TASK_SIZE_MAX.

Signed-off-by: Oleg Nesterov <oleg@redhat.com>

--- x/arch/arm64/kernel/hw_breakpoint.c
+++ x/arch/arm64/kernel/hw_breakpoint.c
@@ -293,7 +293,7 @@ int arch_check_bp_in_kernelspace(struct 
 	va = info->address;
 	len = get_hbp_len(info->ctrl.len);
 
-	return (va >= TASK_SIZE) && ((va + len - 1) >= TASK_SIZE);
+	return (va >= TASK_SIZE) || ((va + len - 1) >= TASK_SIZE);
 }
 
 /*
--- x/arch/arm/kernel/hw_breakpoint.c
+++ x/arch/arm/kernel/hw_breakpoint.c
@@ -464,7 +464,7 @@ int arch_check_bp_in_kernelspace(struct 
 	va = info->address;
 	len = get_hbp_len(info->ctrl.len);
 
-	return (va >= TASK_SIZE) && ((va + len - 1) >= TASK_SIZE);
+	return (va >= TASK_SIZE) || ((va + len - 1) >= TASK_SIZE);
 }
 
 /*
--- x/arch/sh/kernel/hw_breakpoint.c
+++ x/arch/sh/kernel/hw_breakpoint.c
@@ -132,7 +132,7 @@ int arch_check_bp_in_kernelspace(struct 
 	va = info->address;
 	len = get_hbp_len(info->len);
 
-	return (va >= TASK_SIZE) && ((va + len - 1) >= TASK_SIZE);
+	return (va >= TASK_SIZE) || ((va + len - 1) >= TASK_SIZE);
 }
 
 int arch_bp_generic_fields(int sh_len, int sh_type,
--- x/arch/x86/kernel/hw_breakpoint.c
+++ x/arch/x86/kernel/hw_breakpoint.c
@@ -200,7 +200,7 @@ int arch_check_bp_in_kernelspace(struct 
 	va = info->address;
 	len = get_hbp_len(info->len);
 
-	return (va >= TASK_SIZE) && ((va + len - 1) >= TASK_SIZE);
+	return (va >= TASK_SIZE) || ((va + len - 1) >= TASK_SIZE);
 }
 
 int arch_bp_generic_fields(int x86_len, int x86_type,



^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH 0/1] (Was: Linux 3.11-rc4)
  2013-08-08 15:41             ` Oleg Nesterov
@ 2013-08-08 16:25               ` Linus Torvalds
  2013-08-08 16:54               ` Frederic Weisbecker
  1 sibling, 0 replies; 36+ messages in thread
From: Linus Torvalds @ 2013-08-08 16:25 UTC (permalink / raw)
  To: Oleg Nesterov
  Cc: Grazvydas Ignotas, Felipe Contreras, Linux Kernel Mailing List,
	Frederic Weisbecker, Ingo Molnar, Denys Vlasenko

On Thu, Aug 8, 2013 at 8:41 AM, Oleg Nesterov <oleg@redhat.com> wrote:
>
> On x86 execute breakpoints are only a single byte, which has to be
> the first byte of the instruction. IOW the hardware requires len = 1
> in dr7 or it doesn't work (iirc).
>
> But for some reason perf requires bp_len = sizeof(long), not 1. And
> note that it sets info->len = X86_BREAKPOINT_LEN_X. The comment says:
>
>         x86 inst breakpoints need to have a specific undefined len
>
> but despite its "special" name LEN_X is simply LEN_1, and other code
> relies on this fact.
>
> Now, ptrace correctly requires DR_LEN_1. So arch_bp_generic_fields()
> translates this into "gen_len = sizeof(long)" for validation.

Yeah, that just sounds insane. I suspect it's some misguided attempt
to be compatible either with some broken old version of perf. But if
so, I agree that the compatibility code should be elsewhere, and not
in "let's turn the _correct_ length of 1 into some random crap because
we screwed up elsewhere".

>> But the kernel address checking definitely needs to stay around for
>> security reasons.
>
> Sure. And btw it doesn't look right. I sent the patch below twice (iirc),
> perhaps I should resend it again.

Your patch looks correct.

That said,

> -       return (va >= TASK_SIZE) && ((va + len - 1) >= TASK_SIZE);
> +       return (va >= TASK_SIZE) || ((va + len - 1) >= TASK_SIZE);

I'd much rather make this be more clearly about overflow, and write
this as something like

    last = va + len - 1;
    /* Check for overflow too */
    if (last < va || end >= TASK_SIZE)

because quite frankly, the "va >= TASK_SIZE" check is kind of insane.
It makes very little semantic sense. The rewritten test can be seen as
two independent tests that both make sense individually (the first
checks for overflow, the second checks that the range isn't in kernel
space).

In fact, the overflow check could/should even be done in generic code,
methinks. There's nothing architecture-specific about that.

                   Linus

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH 0/1] (Was: Linux 3.11-rc4)
  2013-08-08 15:41             ` Oleg Nesterov
  2013-08-08 16:25               ` Linus Torvalds
@ 2013-08-08 16:54               ` Frederic Weisbecker
  2013-08-08 18:15                 ` Oleg Nesterov
  1 sibling, 1 reply; 36+ messages in thread
From: Frederic Weisbecker @ 2013-08-08 16:54 UTC (permalink / raw)
  To: Oleg Nesterov
  Cc: Linus Torvalds, Grazvydas Ignotas, Felipe Contreras,
	Linux Kernel Mailing List, Ingo Molnar, Denys Vlasenko

On Thu, Aug 08, 2013 at 05:41:07PM +0200, Oleg Nesterov wrote:
> On 08/07, Linus Torvalds wrote:
> >
> > Now, I do agree that the debug registers are *much* less likely to
> > have those kinds of really subtle issues, so maybe relaxing some of
> > the tests might be reasonable. I'd be a bit nervous about it, but if
> > it's *only* the length/alignment, and Intel people can be convinced
> > that it doesn't result in any nasty undefined behavior (as long as the
> > address is in user space), maybe we could make that change just to
> > make it easier for Wine.
> 
> Oh, I do not know. And again, this way a user can't notice the problem
> if the arguments are wrong.
> 
> But personally I think it would be nice to cleanup the perf interface,
> although probably it is too later.
> 
> On x86 execute breakpoints are only a single byte, which has to be
> the first byte of the instruction. IOW the hardware requires len = 1
> in dr7 or it doesn't work (iirc).
> 
> But for some reason perf requires bp_len = sizeof(long), not 1. And
> note that it sets info->len = X86_BREAKPOINT_LEN_X. The comment says:
> 
> 	x86 inst breakpoints need to have a specific undefined len
> 
> but despite its "special" name LEN_X is simply LEN_1, and other code
> relies on this fact.
> 
> Now, ptrace correctly requires DR_LEN_1. So arch_bp_generic_fields()
> translates this into "gen_len = sizeof(long)" for validation.
> 
> arch_build_bp_info() thinks that X86_BREAKPOINT_EXECUTE should have
> ->bp_len == sizeof(long), so we translate it back into LEN_1 internally.

I did this interface and I'm sorry about it.

This bp_len == sizeof(long) requirement comes from a very buggy conception
I had at the time I wrote that. I thought it would be pretty intuitive to
assume that instruction breakpoints should be the size of the instruction
itself as a generic interface for all archs. But at least x86 instructions
size aren't static. That sizeof(long) assumption just popped up from nowhere
at 5 am two years ago I guess :-(

And worse: I realized that mistake later but never moved it in the top of the
TODO-list pile because I had the feeling that nobody was using the perf breakpoint
interface anyway.

I'm all for fixing this. May be we can start by backporting a patch that
ignores the value of gen_len for instruction breakpoints in x86?

I don't know how other archs use it. I need to check. But this bp_len
should rather be used for range breakpoints on archs that support it. I
hope we can still reuse it if the damage of my initial misconception
isn't too widely expanded.

What do you think?

> 
> This looks confusing, imho. And imho X86_BREAKPOINT_LEN_X should die.

Yep.

Thanks.

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH 0/1] (Was: Linux 3.11-rc4)
  2013-08-08 16:54               ` Frederic Weisbecker
@ 2013-08-08 18:15                 ` Oleg Nesterov
  2013-08-09 16:45                   ` Frederic Weisbecker
  0 siblings, 1 reply; 36+ messages in thread
From: Oleg Nesterov @ 2013-08-08 18:15 UTC (permalink / raw)
  To: Frederic Weisbecker
  Cc: Linus Torvalds, Grazvydas Ignotas, Felipe Contreras,
	Linux Kernel Mailing List, Ingo Molnar, Denys Vlasenko

On 08/08, Frederic Weisbecker wrote:
>
> I'm all for fixing this. May be we can start by backporting a patch that
> ignores the value of gen_len for instruction breakpoints in x86?

Or perhaps we can start with the something like below.

But probably we should move "attr.bp_len == HW_BREAKPOINT_LEN_1" check
from arch_build_bp_info() to its caller, arch_validate_hwbkpt_settings().

Because:

> But this bp_len
> should rather be used for range breakpoints on archs that support it.

Yes, exactly, and we already have the patches for amd, so bp->len can
be actually != 1 but currently we can't support because it is checked
in arch_build_bp_info().

Oleg.

--- x/arch/x86/kernel/hw_breakpoint.c
+++ x/arch/x86/kernel/hw_breakpoint.c
@@ -208,19 +208,16 @@ int arch_bp_generic_fields(int x86_len, 
 {
 	/* Type */
 	switch (x86_type) {
-	case X86_BREAKPOINT_EXECUTE:
-		if (x86_len != X86_BREAKPOINT_LEN_X)
-			return -EINVAL;
-
-		*gen_type = HW_BREAKPOINT_X;
-		*gen_len = sizeof(long);
-		return 0;
 	case X86_BREAKPOINT_WRITE:
 		*gen_type = HW_BREAKPOINT_W;
 		break;
 	case X86_BREAKPOINT_RW:
 		*gen_type = HW_BREAKPOINT_W | HW_BREAKPOINT_R;
 		break;
+	case X86_BREAKPOINT_EXECUTE:
+		*gen_type = HW_BREAKPOINT_X;
+		if (x86_len == X86_BREAKPOINT_LEN_1)
+			break;
 	default:
 		return -EINVAL;
 	}
@@ -265,15 +262,11 @@ static int arch_build_bp_info(struct per
 		break;
 	case HW_BREAKPOINT_X:
 		info->type = X86_BREAKPOINT_EXECUTE;
-		/*
-		 * x86 inst breakpoints need to have a specific undefined len.
-		 * But we still need to check userspace is not trying to setup
-		 * an unsupported length, to get a range breakpoint for example.
-		 */
-		if (bp->attr.bp_len == sizeof(long)) {
-			info->len = X86_BREAKPOINT_LEN_X;
-			return 0;
-		}
+		/* until we change tools/perf */
+		if (bp->attr.bp_len == sizeof(long))
+			bp->attr.bp_len = HW_BREAKPOINT_LEN_1;
+		if (bp->attr.bp_len == HW_BREAKPOINT_LEN_1)
+			break;
 	default:
 		return -EINVAL;
 	}


^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH 0/1] (Was: Linux 3.11-rc4)
  2013-08-08 18:15                 ` Oleg Nesterov
@ 2013-08-09 16:45                   ` Frederic Weisbecker
  2013-08-09 17:12                     ` Oleg Nesterov
  0 siblings, 1 reply; 36+ messages in thread
From: Frederic Weisbecker @ 2013-08-09 16:45 UTC (permalink / raw)
  To: Oleg Nesterov
  Cc: Linus Torvalds, Grazvydas Ignotas, Felipe Contreras,
	Linux Kernel Mailing List, Ingo Molnar, Denys Vlasenko

On Thu, Aug 08, 2013 at 08:15:21PM +0200, Oleg Nesterov wrote:
> On 08/08, Frederic Weisbecker wrote:
> >
> > I'm all for fixing this. May be we can start by backporting a patch that
> > ignores the value of gen_len for instruction breakpoints in x86?
> 
> Or perhaps we can start with the something like below.

(commented on the diff below)

> 
> But probably we should move "attr.bp_len == HW_BREAKPOINT_LEN_1" check
> from arch_build_bp_info() to its caller, arch_validate_hwbkpt_settings().
> 
> Because:
> 
> > But this bp_len
> > should rather be used for range breakpoints on archs that support it.
> 
> Yes, exactly, and we already have the patches for amd, so bp->len can
> be actually != 1 but currently we can't support because it is checked
> in arch_build_bp_info().

Hmm, but how moving that to arch_validate_hwbkpt_seetings() would solve
the issue?

> 
> Oleg.
> 
> --- x/arch/x86/kernel/hw_breakpoint.c
> +++ x/arch/x86/kernel/hw_breakpoint.c
> @@ -208,19 +208,16 @@ int arch_bp_generic_fields(int x86_len, 
>  {
>  	/* Type */
>  	switch (x86_type) {
> -	case X86_BREAKPOINT_EXECUTE:
> -		if (x86_len != X86_BREAKPOINT_LEN_X)
> -			return -EINVAL;
> -
> -		*gen_type = HW_BREAKPOINT_X;
> -		*gen_len = sizeof(long);
> -		return 0;
>  	case X86_BREAKPOINT_WRITE:
>  		*gen_type = HW_BREAKPOINT_W;
>  		break;
>  	case X86_BREAKPOINT_RW:
>  		*gen_type = HW_BREAKPOINT_W | HW_BREAKPOINT_R;
>  		break;
> +	case X86_BREAKPOINT_EXECUTE:
> +		*gen_type = HW_BREAKPOINT_X;
> +		if (x86_len == X86_BREAKPOINT_LEN_1)
> +
>			break;
>  	default:
>  		return -EINVAL;
>  	}
> @@ -265,15 +262,11 @@ static int arch_build_bp_info(struct per
>  		break;
>  	case HW_BREAKPOINT_X:
>  		info->type = X86_BREAKPOINT_EXECUTE;
> -		/*
> -		 * x86 inst breakpoints need to have a specific undefined len.
> -		 * But we still need to check userspace is not trying to setup
> -		 * an unsupported length, to get a range breakpoint for example.
> -		 */
> -		if (bp->attr.bp_len == sizeof(long)) {
> -			info->len = X86_BREAKPOINT_LEN_X;
> -			return 0;
> -		}
> +		/* until we change tools/perf */
> +		if (bp->attr.bp_len == sizeof(long))
> +			bp->attr.bp_len = HW_BREAKPOINT_LEN_1;

Too bad we need to keep that compatibility around. Do you think this could be
a problem for AMD range breakpoints?

We can also fix the tools, then may be we'll be able to remove the kernel hack
compatibility in a few years.

Oh I need to check other archs as well.

thanks.

> +		if (bp->attr.bp_len == HW_BREAKPOINT_LEN_1)
> +			break;
>  	default:
>  		return -EINVAL;
>  	}
> 

^ permalink raw reply	[flat|nested] 36+ messages in thread

* Re: [PATCH 0/1] (Was: Linux 3.11-rc4)
  2013-08-09 16:45                   ` Frederic Weisbecker
@ 2013-08-09 17:12                     ` Oleg Nesterov
  0 siblings, 0 replies; 36+ messages in thread
From: Oleg Nesterov @ 2013-08-09 17:12 UTC (permalink / raw)
  To: Frederic Weisbecker
  Cc: Linus Torvalds, Grazvydas Ignotas, Felipe Contreras,
	Linux Kernel Mailing List, Ingo Molnar, Denys Vlasenko

On 08/09, Frederic Weisbecker wrote:
>
> On Thu, Aug 08, 2013 at 08:15:21PM +0200, Oleg Nesterov wrote:
> > But probably we should move "attr.bp_len == HW_BREAKPOINT_LEN_1" check
> > from arch_build_bp_info() to its caller, arch_validate_hwbkpt_settings().
> >
> > Because:
> >
> > > But this bp_len
> > > should rather be used for range breakpoints on archs that support it.
> >
> > Yes, exactly, and we already have the patches for amd, so bp->len can
> > be actually != 1 but currently we can't support because it is checked
> > in arch_build_bp_info().
>
> Hmm, but how moving that to arch_validate_hwbkpt_seetings() would solve
> the issue?

Of course, this itself won't solve the issue, sorry for confusion.

I meant that arch_build_bp_info(X86_BREAKPOINT_EXECUTE) should not fail
if ->bp_len is wrong, just because (unless we add more complications) it
can't know if it is correct or not (if the hardware supports the range
EXECUTE bps).

arch_validate_hwbkpt_settings() does the additional checks anyway, and
more importantly it checks cpu_has_bpext/mask. So I think it should also
have the additional check for X86_BREAKPOINT_EXECUTE case.

> > @@ -265,15 +262,11 @@ static int arch_build_bp_info(struct per
> >  		break;
> >  	case HW_BREAKPOINT_X:
> >  		info->type = X86_BREAKPOINT_EXECUTE;
> > -		/*
> > -		 * x86 inst breakpoints need to have a specific undefined len.
> > -		 * But we still need to check userspace is not trying to setup
> > -		 * an unsupported length, to get a range breakpoint for example.
> > -		 */
> > -		if (bp->attr.bp_len == sizeof(long)) {
> > -			info->len = X86_BREAKPOINT_LEN_X;
> > -			return 0;
> > -		}
> > +		/* until we change tools/perf */
> > +		if (bp->attr.bp_len == sizeof(long))
> > +			bp->attr.bp_len = HW_BREAKPOINT_LEN_1;
>
> Too bad we need to keep that compatibility around.

Yes, agreed... Do you see a better approach?

And just in case, it is not that I think that this hack is much better
than "ignore bp_len" as you suggested before. It's up to you.

> Do you think this could be
> a problem for AMD range breakpoints?

Yes, this doesn't look exactly right if ->bp_len == 8 actually tries to
denote a range. But this is the temporary hack, and at least currently
info->mask is only used if len > LEN_8, so I hope this should be fine.

> We can also fix the tools, then may be we'll be able to remove the kernel hack
> compatibility in a few years.

Or perhaps even earlier ;) And, perhaps after we change the tools we
can add pr_warn() for this case.

> Oh I need to check other archs as well.

Yes, and I'm afraid that tools/perf needs some arch-dependant define for
HW_BREAKPOINT_X's attr.bp_len. Or perhaps attr.bp_len == 0 could mean
"choose the right length" ?

Oleg.


^ permalink raw reply	[flat|nested] 36+ messages in thread

end of thread, other threads:[~2013-08-09 17:17 UTC | newest]

Thread overview: 36+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-08-04 21:09 Linux 3.11-rc4 Linus Torvalds
2013-08-05  2:34 ` O_TMPFILE fs corruption (Re: Linux 3.11-rc4) Andy Lutomirski
2013-08-05  3:45   ` Linus Torvalds
2013-08-05  4:45     ` Andrew Lutomirski
2013-08-05  8:26     ` Christoph Hellwig
2013-08-05 16:04       ` Jörn Engel
2013-08-05 14:31     ` Al Viro
2013-08-05  4:20 ` Linux 3.11-rc4 Felipe Contreras
2013-08-05 13:29   ` Oleg Nesterov
2013-08-05 14:27     ` Felipe Contreras
2013-08-05 14:39       ` Oleg Nesterov
2013-08-05 17:02         ` Felipe Contreras
2013-08-05 17:11           ` Oleg Nesterov
2013-08-05 17:40             ` Felipe Contreras
2013-08-05 17:56               ` Oleg Nesterov
2013-08-05 17:39     ` Linus Torvalds
2013-08-05 17:43       ` Felipe Contreras
2013-08-05 18:08         ` Felipe Contreras
2013-08-05 17:47       ` Oleg Nesterov
2013-08-05 18:46   ` Oleg Nesterov
2013-08-05 18:54     ` Linus Torvalds
2013-08-05 18:57       ` Oleg Nesterov
2013-08-05 19:06         ` Linus Torvalds
2013-08-06 15:43   ` [PATCH 0/1] (Was: Linux 3.11-rc4) Oleg Nesterov
2013-08-06 15:43     ` [PATCH 1/1] Revert "ptrace: PTRACE_DETACH should do flush_ptrace_hw_breakpoint(child)" Oleg Nesterov
2013-08-07 12:05     ` [PATCH 0/1] (Was: Linux 3.11-rc4) Grazvydas Ignotas
2013-08-07 17:22       ` Oleg Nesterov
2013-08-07 19:26       ` Linus Torvalds
2013-08-07 19:27         ` Oleg Nesterov
2013-08-07 19:47           ` Linus Torvalds
2013-08-08 15:41             ` Oleg Nesterov
2013-08-08 16:25               ` Linus Torvalds
2013-08-08 16:54               ` Frederic Weisbecker
2013-08-08 18:15                 ` Oleg Nesterov
2013-08-09 16:45                   ` Frederic Weisbecker
2013-08-09 17:12                     ` Oleg Nesterov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.