From owner-freebsd-bugs Mon Oct 14 14:50: 5 2002 Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 38CEC37B401 for ; Mon, 14 Oct 2002 14:50:03 -0700 (PDT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 622F143EAF for ; Mon, 14 Oct 2002 14:50:02 -0700 (PDT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.12.6/8.12.6) with ESMTP id g9ELo2Co076252 for ; Mon, 14 Oct 2002 14:50:02 -0700 (PDT) (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.12.6/8.12.6/Submit) id g9ELo2Rv076251; Mon, 14 Oct 2002 14:50:02 -0700 (PDT) Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id E551B37B401 for ; Mon, 14 Oct 2002 14:46:29 -0700 (PDT) Received: from walton.kettenis.dyndns.org (a169250.upc-a.chello.nl [62.163.169.250]) by mx1.FreeBSD.org (Postfix) with ESMTP id 93B5743EAF for ; Mon, 14 Oct 2002 14:46:28 -0700 (PDT) (envelope-from kettenis@elgar.kettenis.dyndns.org) Received: from elgar.kettenis.dyndns.org (elgar.kettenis.dyndns.org [192.168.0.2]) by walton.kettenis.dyndns.org (8.12.5/8.12.5) with ESMTP id g9ELkRA1000481 for ; Mon, 14 Oct 2002 23:46:27 +0200 (CEST) (envelope-from kettenis@elgar.kettenis.dyndns.org) Received: from elgar.kettenis.dyndns.org (localhost [127.0.0.1]) by elgar.kettenis.dyndns.org (8.12.6/8.12.6) with ESMTP id g9ELkNjW004078 for ; Mon, 14 Oct 2002 23:46:23 +0200 (CEST) (envelope-from kettenis@elgar.kettenis.dyndns.org) Received: (from kettenis@localhost) by elgar.kettenis.dyndns.org (8.12.6/8.12.6/Submit) id g9ELkMMc004077; Mon, 14 Oct 2002 23:46:22 +0200 (CEST) Message-Id: <200210142146.g9ELkMMc004077@elgar.kettenis.dyndns.org> Date: Mon, 14 Oct 2002 23:46:22 +0200 (CEST) From: Mark Kettenis Reply-To: Mark Kettenis To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Subject: kern/44065: [PATCH] Fix PT_IO ptrace(2) request Sender: owner-freebsd-bugs@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org >Number: 44065 >Category: kern >Synopsis: [PATCH] Fix PT_IO ptrace(2) request >Confidential: no >Severity: critical >Priority: high >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Mon Oct 14 14:50:01 PDT 2002 >Closed-Date: >Last-Modified: >Originator: Mark Kettenis >Release: FreeBSD 5.0-CURRENT i386 >Organization: >Environment: System: FreeBSD elgar.kettenis.dyndns.org 5.0-CURRENT FreeBSD 5.0-CURRENT #1: Mon Oct 14 23:23:21 CEST 2002 kettenis@elgar.kettenis.dyndns.org:/usr/obj/usr/src/sys/GENERIC i386 >Description: The new PT_IO ptrace(2) request doesn't work, since it doesn't release a lock. >How-To-Repeat: struct ptrace_io_desc piod; ptrace(PT_IO, pid, &piod, 0); >Fix: Since PT_IO is similar to PT_READ_D/PT_WRITE_D, I copied the PROC_UNLOCK from there and inserted in the same location. Patch, against version 1.103 of sys_process.c, attached. This patch is also available as: http://members.chello.nl/~m.m.kettenis/FreeBSD/5-current/pt_io.patch. Mark P.S. GDB will soon use this request for its data transfers if it is available. Really helps with large data transfers :-). --- /usr/src/sys/kern/sys_process.c.orig Wed Sep 11 10:13:54 2002 +++ /usr/src/sys/kern/sys_process.c Mon Oct 14 23:22:01 2002 @@ -647,6 +647,7 @@ kern_ptrace(struct thread *td, int req, return (error); case PT_IO: + PROC_UNLOCK(p); piod = addr; iov.iov_base = piod->piod_addr; iov.iov_len = piod->piod_len; >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message