From patchwork Tue Jun 19 01:41:57 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Roth X-Patchwork-Id: 10472903 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 560AA60244 for ; Tue, 19 Jun 2018 02:28:46 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 44FB028C68 for ; Tue, 19 Jun 2018 02:28:46 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 37A8C28C6F; Tue, 19 Jun 2018 02:28:46 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id D6B4928C68 for ; Tue, 19 Jun 2018 02:28:45 +0000 (UTC) Received: from localhost ([::1]:38631 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fV6Nw-0001OJ-Bg for patchwork-qemu-devel@patchwork.kernel.org; Mon, 18 Jun 2018 22:28:44 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45638) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fV5hp-0001Px-Ji for qemu-devel@nongnu.org; Mon, 18 Jun 2018 21:45:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fV5ho-0008Jd-Mt for qemu-devel@nongnu.org; Mon, 18 Jun 2018 21:45:13 -0400 Received: from mail-oi0-x22d.google.com ([2607:f8b0:4003:c06::22d]:38222) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fV5ho-0008Iw-Hj; Mon, 18 Jun 2018 21:45:12 -0400 Received: by mail-oi0-x22d.google.com with SMTP id d5-v6so16697294oib.5; Mon, 18 Jun 2018 18:45:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=5JH3eIoeGEoP+GHKl6BWNAD6bBnrrVa66Kqg/80H1BA=; b=go1ErG8//FZJtwk/5ZFUhyqC322nghV4IIh2K6Q1oitAp8tCQ6QKMMHeZjW0Rvk++7 nZBSB0geDrQ0nNUsAe9hHrFKJ6GmKPaRdXg5LbP108gp2P/ayZJ6BWNg+MQ3nlAhi5ah qoI5CSgvkY3aWoN034ZDbEhlIXS0U8hxs76qxz6scokMwcIsddLIJKh8rRvzKnP4Leq8 C99vUXyowx5X0v4AHSjqGJKOMwshTqk6E3bxF3Dmb1AFWVAj1FNuN8sTIR7wUw9AuJK8 EK6tVtgqJud13NbBSjIiQpO/8WGSG0/2IH6/OtUvZJkdNlLFHHNGmCphwvi5wZVsptgv qHSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=5JH3eIoeGEoP+GHKl6BWNAD6bBnrrVa66Kqg/80H1BA=; b=Mpxr1j4vmaQTbPQhrR8lQhYAIo99S4ALTr3GQX8V6IMCGteD01MQ4mPctF7RLKznYh ruUsOzmXuvJRUyDn8v5/kd6RDCaHoIOBcGQHqpwejpBmk7HHbphYOYs4qSV2fSUSGyzk QALMl+sI3wq1Woj1EjXks7yMugBaeADQltG6xCH6tyUNfYCUr6A4jlEEiUs3yPhaXNIL Lu/HtYi0B7RNp9VALOGJY/rLfVo3cUZ68WiJXGBqj/7TzPXrZEEaLUiWtpgRTa81YITr jabfUfJPF/WMmh7825ztAUkKCjAk4HFOuxf5OzyU8bQ2qvVfGtEZMFy9YUdcfyuqaKKa jqtA== X-Gm-Message-State: APt69E1n84R845x6Z2PJTpDw8k9bKdDoI+owH2GO516+GjHojo7Jyd8H fsmuWnGbObG3tIe8bCvGMYFni2iq X-Google-Smtp-Source: ADUXVKI3w9xZwqJtHZ5OBSDJOWe6/SbLmBsBCFWGRxozTGgOKFSpwcpbjb4bX8LOJgY/PQRJWFVesQ== X-Received: by 2002:aca:5c46:: with SMTP id q67-v6mr7875382oib.17.1529372711308; Mon, 18 Jun 2018 18:45:11 -0700 (PDT) Received: from localhost ([2600:1700:70:e488:b0ee:9bda:ee6f:91be]) by smtp.gmail.com with ESMTPSA id c71-v6sm10092670oig.44.2018.06.18.18.45.10 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 18 Jun 2018 18:45:10 -0700 (PDT) From: Michael Roth To: qemu-devel@nongnu.org Date: Mon, 18 Jun 2018 20:41:57 -0500 Message-Id: <20180619014319.28272-32-mdroth@linux.vnet.ibm.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180619014319.28272-1-mdroth@linux.vnet.ibm.com> References: <20180619014319.28272-1-mdroth@linux.vnet.ibm.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4003:c06::22d Subject: [Qemu-devel] [PATCH 031/113] address_space_access_valid: address_space_to_flatview needs RCU lock X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Paolo Bonzini , qemu-stable@nongnu.org Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP From: Paolo Bonzini address_space_access_valid is calling address_space_to_flatview but it can be called outside the RCU lock. To fix it, push the rcu_read_lock/unlock pair up from flatview_access_valid to address_space_access_valid. Reviewed-by: Alexey Kardashevskiy Signed-off-by: Paolo Bonzini (cherry picked from commit 11e732a5ed46903f997985bed4c3767ca28a7eb6) Signed-off-by: Michael Roth --- exec.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/exec.c b/exec.c index 7e3c5c67f0..7c4fb68368 100644 --- a/exec.c +++ b/exec.c @@ -3322,7 +3322,6 @@ static bool flatview_access_valid(FlatView *fv, hwaddr addr, int len, MemoryRegion *mr; hwaddr l, xlat; - rcu_read_lock(); while (len > 0) { l = len; mr = flatview_translate(fv, addr, &xlat, &l, is_write); @@ -3337,15 +3336,20 @@ static bool flatview_access_valid(FlatView *fv, hwaddr addr, int len, len -= l; addr += l; } - rcu_read_unlock(); return true; } bool address_space_access_valid(AddressSpace *as, hwaddr addr, int len, bool is_write) { - return flatview_access_valid(address_space_to_flatview(as), - addr, len, is_write); + FlatView *fv; + bool result; + + rcu_read_lock(); + fv = address_space_to_flatview(as); + result = flatview_access_valid(fv, addr, len, is_write); + rcu_read_unlock(); + return result; } static hwaddr