From owner-freebsd-bugs@FreeBSD.ORG Mon Dec 19 11:20:04 2005 Return-Path: X-Original-To: freebsd-bugs@hub.freebsd.org 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 CD2E716A41F for ; Mon, 19 Dec 2005 11:20:04 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id B5F4943D5F for ; Mon, 19 Dec 2005 11:20:03 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.4/8.13.4) with ESMTP id jBJBK3qo016010 for ; Mon, 19 Dec 2005 11:20:03 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.4/8.13.4/Submit) id jBJBK37F016006; Mon, 19 Dec 2005 11:20:03 GMT (envelope-from gnats) Resent-Date: Mon, 19 Dec 2005 11:20:03 GMT Resent-Message-Id: <200512191120.jBJBK37F016006@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Andrey Simonenko Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id DEFD716A41F for ; Mon, 19 Dec 2005 11:13:41 +0000 (GMT) (envelope-from simon@comsys.ntu-kpi.kiev.ua) Received: from comsys.ntu-kpi.kiev.ua (comsys.ntu-kpi.kiev.ua [195.245.194.142]) by mx1.FreeBSD.org (Postfix) with ESMTP id EE19F43D5D for ; Mon, 19 Dec 2005 11:13:37 +0000 (GMT) (envelope-from simon@comsys.ntu-kpi.kiev.ua) Received: from pm513-1.comsys.ntu-kpi.kiev.ua (pm513-1.comsys.ntu-kpi.kiev.ua [10.18.52.101]) (authenticated bits=0) by comsys.ntu-kpi.kiev.ua (8.12.10/8.12.10) with ESMTP id jBJBOVVO004321 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL) for ; Mon, 19 Dec 2005 13:24:31 +0200 (EET) Received: by pm513-1.comsys.ntu-kpi.kiev.ua (Postfix, from userid 1001) id 06B275C020; Mon, 19 Dec 2005 13:13:42 +0200 (EET) Message-Id: <20051219111342.GA995@pm513-1.comsys.ntu-kpi.kiev.ua> Date: Mon, 19 Dec 2005 13:13:42 +0200 From: Andrey Simonenko To: FreeBSD-gnats-submit@FreeBSD.org Cc: Subject: kern/90644: [patch] inherit LOCAL_CREDS option for accepted sockets from listen socket X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Dec 2005 11:20:04 -0000 >Number: 90644 >Category: kern >Synopsis: [patch] inherit LOCAL_CREDS option for accepted sockets from listen socket >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Mon Dec 19 11:20:02 GMT 2005 >Closed-Date: >Last-Modified: >Originator: Andrey Simonenko >Release: FreeBSD 6.0-STABLE i386 >Organization: >Environment: FreeBSD 6.0-STABLE, sys/kern/uipc_usrreq.c,v 1.155.2.1 >Description: Sockets returned by the accept(2) system call do not inherit LOCAL_CREDS option from their listen socket. As the result it is necessary to call setsockopt(LOCAL_CREDS) for each accepted socket, what gives overhead. In NetBSD accepted sockets inherit LOCAL_CREDS option from their listen socket. Shouldn't __FreeBSD_version be incremented if this patch is committed ? >How-To-Repeat: Try to run src/regress/sys/kern/unfdpass/unfdpass.c from NetBSD 2.0 on FreeBSD, before and after patch. >Fix: --- uipc_usrreq.c.orig Thu Nov 24 09:07:51 2005 +++ uipc_usrreq.c Sun Dec 18 20:26:09 2005 @@ -1010,6 +1010,8 @@ memcpy(&unp->unp_peercred, &unp2->unp_peercred, sizeof(unp->unp_peercred)); unp->unp_flags |= UNP_HAVEPC; + if (unp2->unp_flags & UNP_WANTCRED) + unp3->unp_flags |= UNP_WANTCRED; #ifdef MAC SOCK_LOCK(so); mac_set_socket_peer_from_socket(so, so3); >Release-Note: >Audit-Trail: >Unformatted: