From patchwork Tue Mar 5 16:09:05 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Hurley X-Patchwork-Id: 225073 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id AEBCB2C0314 for ; Wed, 6 Mar 2013 03:11:52 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757050Ab3CEQJx (ORCPT ); Tue, 5 Mar 2013 11:09:53 -0500 Received: from mailout01.c08.mtsvc.net ([205.186.168.189]:41140 "EHLO mailout01.c08.mtsvc.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756813Ab3CEQJv (ORCPT ); Tue, 5 Mar 2013 11:09:51 -0500 Received: from n22.c08.mtsvc.net ([205.186.176.22]) by mailout01.c08.mtsvc.net with esmtp (Exim 4.72) (envelope-from ) id 1UCuQp-0006xg-Kh; Tue, 05 Mar 2013 08:09:35 -0800 Received: from 68-189-242-29.dhcp.oxfr.ma.charter.com ([68.189.242.29]:43839 helo=thor.lan) by n22.c08.mtsvc.net with esmtpsa (TLS1.1:DHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.80.1) (envelope-from ) id 1UCuQo-0001tA-4G; Tue, 05 Mar 2013 08:09:35 -0800 From: Peter Hurley To: David Miller , Samuel Ortiz Cc: Sasha Levin , Greg Kroah-Hartman , netdev@vger.kernel.org, Jiri Slaby , linux-kernel@vger.kernel.org, Peter Hurley Subject: [PATCH 2/4] net/irda: Hold port lock while bumping blocked_open Date: Tue, 5 Mar 2013 11:09:05 -0500 Message-Id: <1362499747-4262-3-git-send-email-peter@hurleysoftware.com> X-Mailer: git-send-email 1.8.1.2 In-Reply-To: <1362499747-4262-1-git-send-email-peter@hurleysoftware.com> References: <1362371063.3221.185.camel@thor.lan> <1362499747-4262-1-git-send-email-peter@hurleysoftware.com> X-Authenticated-User: 125194 peter@hurleysoftware.com X-Spam-Status: "score=-0.9 tests=ALL_TRUSTED, TVD_RCVD_IP version=3.3.1 cmae=v=1.1 cv=lrjH+2xzIqj4PtBndNBiF3kNcDPTgJYy5MO9fqj9h9k= c=1 sm=0 a=0HWiU-cpHxEA:10 a=lF0tP7JmhmIA:10 a=hykYmh53AP4XJEdaM13vyQ==:17 a=xGRsDScCAAAA:8 a=qkZaKi92YdhqUD2PBGcA:9 a=A4LuvFU5fKoA:10 a=HpAAvcLHHh0Zw7uRqdWCyQ==:117" X-Spam-Level: Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Although tty_lock() already protects concurrent update to blocked_open, that fails to meet the separation-of-concerns between tty_port and tty. Signed-off-by: Peter Hurley --- net/irda/ircomm/ircomm_tty.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/irda/ircomm/ircomm_tty.c b/net/irda/ircomm/ircomm_tty.c index 1721dc7..d282bbe 100644 --- a/net/irda/ircomm/ircomm_tty.c +++ b/net/irda/ircomm/ircomm_tty.c @@ -317,8 +317,8 @@ static int ircomm_tty_block_til_ready(struct ircomm_tty_cb *self, spin_lock_irqsave(&port->lock, flags); if (!tty_hung_up_p(filp)) port->count--; - spin_unlock_irqrestore(&port->lock, flags); port->blocked_open++; + spin_unlock_irqrestore(&port->lock, flags); while (1) { if (tty->termios.c_cflag & CBAUD) @@ -362,8 +362,8 @@ static int ircomm_tty_block_til_ready(struct ircomm_tty_cb *self, spin_lock_irqsave(&port->lock, flags); if (!tty_hung_up_p(filp)) port->count++; - spin_unlock_irqrestore(&port->lock, flags); port->blocked_open--; + spin_unlock_irqrestore(&port->lock, flags); IRDA_DEBUG(1, "%s(%d):block_til_ready after blocking on %s open_count=%d\n", __FILE__, __LINE__, tty->driver->name, port->count);