* 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: 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: 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: 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-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: 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: 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: 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 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: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 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: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: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 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 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.