From owner-cvs-src@FreeBSD.ORG Fri Feb 3 11:38:21 2006 Return-Path: X-Original-To: cvs-src@FreeBSD.org Delivered-To: cvs-src@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 3677D16A420; Fri, 3 Feb 2006 11:38:21 +0000 (GMT) (envelope-from glebius@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id AB0A343D6E; Fri, 3 Feb 2006 11:38:20 +0000 (GMT) (envelope-from glebius@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id k13BcKPG081444; Fri, 3 Feb 2006 11:38:20 GMT (envelope-from glebius@repoman.freebsd.org) Received: (from glebius@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id k13BcK09081443; Fri, 3 Feb 2006 11:38:20 GMT (envelope-from glebius) Message-Id: <200602031138.k13BcK09081443@repoman.freebsd.org> From: Gleb Smirnoff Date: Fri, 3 Feb 2006 11:38:19 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Cc: Subject: cvs commit: src/sys/netinet ip_dummynet.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 03 Feb 2006 11:38:21 -0000 glebius 2006-02-03 11:38:19 UTC FreeBSD src repository Modified files: sys/netinet ip_dummynet.c Log: Dropping the lock in the transmit_event() is not safe, because we store some pipe pointers on stack. If user reconfigures dummynet in the interlock gap, we can work with freed pipes after relock. To fix this, we decided not to send packets in transmit_event(), but fill a queue. At the end of dummynet() and dummynet_io(), after the lock is dropped, if there is something in the queue we run dummynet_send() to process the queue. In collaboration with: ru Revision Changes Path 1.98 +115 -94 src/sys/netinet/ip_dummynet.c