Received: by 2002:a25:683:0:0:0:0:0 with SMTP id 125csp4317725ybg; Mon, 8 Jun 2020 05:00:49 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy4EQkaCY+TleHfggHpp4xIT8/CfPAZZiVtr+He9ZFbgFsZqYYQ3aGFU6R3fs9jq+Ch1+cJ X-Received: by 2002:a50:cccc:: with SMTP id b12mr21231570edj.68.1591617649397; Mon, 08 Jun 2020 05:00:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1591617649; cv=none; d=google.com; s=arc-20160816; b=xNQpAOW2hgGaLTHrlE6RaTfZSNLyJUvTFketsGIqp8ww8GBKoKFzqkE/k43HbLLEBU ocdKC2GvCCTYsWH1nCcZbXVOoILGATJUxNDfGv/GujBy9yS0Ps3IGYeIAFVEg5IKsEI9 U/D44anT3/00bFqAecwVnZxRQVZhBoaegaIcXz4mpAwPLLnUakt7Thvgbl75emrAlb5L IyfWW+FsVWmcfoFianI4H9s1SHzO80wsCi4rThuUeQDtVTfcSuG7ll441eBMwj3x3HIS bqUcK4kr/87D670TBwTvvLVEh3Wl2UHhBNe1gJ5y+p4GPcq5lOQBseodFkjcE2ORQa/W pSRw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-disposition:mime-version :message-id:subject:cc:to:from:date:dkim-signature; bh=VMeCjq5pB2mlhYrwj1qUoEnDE395x17IC3jK6gcC+QQ=; b=epGS4l3MQkpyJaNuk0CMK4pD6/cgp8Dzmr+Zj3RmeLqpHMOwD3V/soEnAAMNKwODAX TKohD+QTrCNqZHE2xAeNzh7Dw2RKlLYA1HesKtNbWrY2tohU5x4h6Yi73kdPE7X1Wdpc 2FV8P0ev4RfGjF8FR4yUsw8NcxvEAwaJof3DZ7C1D6W4I3jjgfycyzQCFprxRLQMzVRs 5XFsn+KELXg42lNqqqCJk7ZL2x7zq1LGjn2TcW4Q3PF6DJ6FCMD2L0W4elOoKdvb/Ok1 mBPtf0a2Duw89erqkcFfs9gn9eM3b2KV6ttKqU8zoop1BWcKS2lm1vPIX8QBy3LWdrob zyeA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@infradead.org header.s=bombadil.20170209 header.b="W/PQ7iAN"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id dp9si10869142ejc.698.2020.06.08.05.00.26; Mon, 08 Jun 2020 05:00:49 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=fail header.i=@infradead.org header.s=bombadil.20170209 header.b="W/PQ7iAN"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726202AbgFHL6E (ORCPT + 99 others); Mon, 8 Jun 2020 07:58:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47090 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729549AbgFHL6D (ORCPT ); Mon, 8 Jun 2020 07:58:03 -0400 Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EDA18C08C5C2; Mon, 8 Jun 2020 04:58:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Type:MIME-Version:Message-ID: Subject:Cc:To:From:Date:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:In-Reply-To:References; bh=VMeCjq5pB2mlhYrwj1qUoEnDE395x17IC3jK6gcC+QQ=; b=W/PQ7iANIEicjFcoxgsAIm7fP9 b7Oxeqp3v3JXpsG+cfsl8rw30CGpuebvSaxJPyev8TSHAo8dN3l6cRD9BO9kMmKgCwRS1y3gUa+Ef F5F6Prg+7+wZpvfHz2tRWi9DZWDzLyYeVFHGbki/hcTdDpYQjxEOGYlk/u5dgtZdFmd2ZW4N8LyOF bJuXjOw2fiUNuTWrY/xoxHzzzyR2DF/PyPd8zV/BrtZkUMukkmyp6+a1SvxBvSC0+LcKuECabNrFA a8MnJ7wIPEaNs0H8TZ3RXit/KfZbEpsmKMVjdlndJxKVdiBmdGXpb8uDvFmXTb7RUIDIB2mx3icxK B4Ha6X2w==; Received: from j217100.upc-j.chello.nl ([24.132.217.100] helo=noisy.programming.kicks-ass.net) by bombadil.infradead.org with esmtpsa (Exim 4.92.3 #3 (Red Hat Linux)) id 1jiGPi-0006l1-BG; Mon, 08 Jun 2020 11:58:02 +0000 Received: from hirez.programming.kicks-ass.net (hirez.programming.kicks-ass.net [192.168.1.225]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by noisy.programming.kicks-ass.net (Postfix) with ESMTPS id A6B643019CE; Mon, 8 Jun 2020 13:58:00 +0200 (CEST) Received: by hirez.programming.kicks-ass.net (Postfix, from userid 1000) id 8EF1D202436EE; Mon, 8 Jun 2020 13:58:00 +0200 (CEST) Date: Mon, 8 Jun 2020 13:58:00 +0200 From: Peter Zijlstra To: Jens Axboe Cc: frederic@kernel.org, linux-kernel@vger.kernel.org, linux-block@vger.kernel.org Subject: blk-softirq vs smp_call_function_single_async() Message-ID: <20200608115800.GA2531@hirez.programming.kicks-ass.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Jens, I've been going through smp_call_function_single_async() users and stumbled upon blk-softirq.c, which has: static int raise_blk_irq(int cpu, struct request *rq) { if (cpu_online(cpu)) { call_single_data_t *data = &rq->csd; data->func = trigger_softirq; data->info = rq; data->flags = 0; smp_call_function_single_async(cpu, data); return 0; } return 1; } What, if anything, guarantees rq->csd is not already in use at that time? The purpose of that CSD is to make the BLOCK_SOFTIRQ go, but there's plenty of other ways to tickle that, afaict. So if that races vs someone else, and that completes whatever was needed, then can't we get to raise_blk_irq() again, even though the csd is still enqueued? Worse; it has: data->flags = 0; so our early exit will not happen, even when it should.