Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp4801074pxj; Wed, 12 May 2021 13:38:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzwdvlXJxgEvOjc8UnDM+r2ynBSsgj/cqES/I4ob+a3R7RN22KI8Yec/u+SgUVOuVyCw5KF X-Received: by 2002:a17:906:b794:: with SMTP id dt20mr6157346ejb.59.1620851884022; Wed, 12 May 2021 13:38:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620851884; cv=none; d=google.com; s=arc-20160816; b=f+eBtRY89ztBYdanNLbWOlRXt53PW/R4zZh7wnqE+vmtzyPLmELOoeMPFuwiNUkDe4 rCY7fpxuGjwglnR1+CqZv/3ecYfYvskSIUuyQg3ZcseIPHswR4KsBSx3G3qDyDL6D8bh 64d0MdCd2spNWmOghVYfmIz30zaKpBR92b6moLcitnkvoLhSlQ5flsP9W3KFY8TR+GSS Pjibu3ocYdvPV3fMho0e2cFwo/hxDlQOCvtYPJpeBBsO6rWKrLgPzexJqRDoa4D98cha YmHSSgcf6AvGvCsHktNnNJqMtf39cQ9IMhovgBuEKk7s2K9FJfbOj3jnTlkwH5elr+fa dlew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-language:content-transfer-encoding :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject:dkim-signature; bh=l7bWInGcVI/26yfA/vnejw5BYKhWxrtGfh6mEKo1dk4=; b=Kq7PzCFbHBXyB7jvtrcrK1LB5985kohRRsxovF6rvZJaEkm86C3HAc3Edq9ZxR3/fe LqvGMwmkHYgJtu2HYpyGTvZVILAE0/Po8ip5O0Edcw5k1mP2pec1PFgz//fqoKycmu5a SY7vPLpeaHJTIQ3PfWIulRoB8juNkIztHAwldcB1mWxnxCYudS1A0fG7a3oRbhX8WtcJ hmQybUcxFHHVep2CsvwwiuD6SnPDryxHSMw5adp+jz73txs/xtj6WnWtv1iwSVwkNyIo 7usr7+p8zeDQhgsX75gaWzIcMrhSBwOVMFn96eGqYKlnodFVwImq5GKaEj1FHHNHVAeG 1u/g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@colorfullife-com.20150623.gappssmtp.com header.s=20150623 header.b=VwxWfvAt; 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 r27si886678ejc.437.2021.05.12.13.36.40; Wed, 12 May 2021 13:38:03 -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=pass header.i=@colorfullife-com.20150623.gappssmtp.com header.s=20150623 header.b=VwxWfvAt; 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 S1345174AbhELUNK (ORCPT + 99 others); Wed, 12 May 2021 16:13:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37136 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243909AbhELS5W (ORCPT ); Wed, 12 May 2021 14:57:22 -0400 Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com [IPv6:2a00:1450:4864:20::52c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 949A2C061351 for ; Wed, 12 May 2021 11:55:17 -0700 (PDT) Received: by mail-ed1-x52c.google.com with SMTP id v5so17232862edc.8 for ; Wed, 12 May 2021 11:55:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=colorfullife-com.20150623.gappssmtp.com; s=20150623; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding:content-language; bh=l7bWInGcVI/26yfA/vnejw5BYKhWxrtGfh6mEKo1dk4=; b=VwxWfvAtwu8QGuwEOsPyo5tUwFGfky7CC3qTOPBGMLrnGr8CrCKtEcPmiA19PZnuu3 1rQhGhChLTaEJDGARfebrWnNQZ3Xm+NMRS88JdC8H4cXBCBzCwOkxjEPCkqfZdamTbsw Hdm2L0KbclM9YDw+lszvsHGLgYnEJ7+a5TduwdoNzoyAnbE8ev4v/kzp+sVtcnD81g+Y pjJwfLRaYlPpZcRHFOOsEX5TyiBCHadn9GZswkPGOdbHF3q3gdI1xj020PqUJHCURv2H LzLUa3bI6D4RHdPN9AuNHRzDj+ambRqNOEx7zSEtb+KQU6f5ey+w1oX3wxsuDShc7ts9 UBIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=l7bWInGcVI/26yfA/vnejw5BYKhWxrtGfh6mEKo1dk4=; b=oXzHplPykKbnttBdysM9kPBDu26n3cqs9mcGwjMvDMB5iw1+/clTOr7pztHq6mLUMU RHm2D2R6YTMjJbeFOq4rn2TfTCd1JPr7Gt4XX8NnSgjRYCIImv40hmQSoOX8DOoI1Ph+ zzTUPjZSk5PUm4NrIvElf5iE2DWWVQ75PoHR9H76c89EZVt1QKA2KWtUx6v6r7MtwzCH yLnrAlp2SBux1PohQdqLv3iV3iMDp/PB6JuQh45lN+8RgQmzO5irEKq0BZcZEp98NEI6 lWehWfcVqhvqEWLhbsZWfauyMA+ysmbXkRAUgKYj1E1Ov6kUd3a00/UsvDTde3GvUHSy RtNA== X-Gm-Message-State: AOAM533c1JDNYGEwTvCHZgBxM78fsDO3FaWTTyqJXpBdPaNkgsJpaHSM AF+SzlPYiY3gMpdLrP6j2kTT9g== X-Received: by 2002:aa7:c749:: with SMTP id c9mr5334269eds.65.1620845716390; Wed, 12 May 2021 11:55:16 -0700 (PDT) Received: from localhost.localdomain (p200300d997048700813060682b44a2a4.dip0.t-ipconnect.de. [2003:d9:9704:8700:8130:6068:2b44:a2a4]) by smtp.googlemail.com with ESMTPSA id jw9sm378268ejc.48.2021.05.12.11.55.15 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 12 May 2021 11:55:15 -0700 (PDT) Subject: Re: [PATCH v4] ipc/mqueue, msg, sem: Avoid relying on a stack reference past its expiry To: Varad Gautam , linux-kernel@vger.kernel.org Cc: Matthias von Faber , Christian Brauner , Oleg Nesterov , "Eric W. Biederman" , Andrew Morton , Davidlohr Bueso , James Morris , Serge Hallyn , Jules Irenge , "Gustavo A. R. Silva" , Alexey Dobriyan References: <20210510102950.12551-1-varad.gautam@suse.com> From: Manfred Spraul Message-ID: Date: Wed, 12 May 2021 20:55:14 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 In-Reply-To: <20210510102950.12551-1-varad.gautam@suse.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Varad, On 5/10/21 12:29 PM, Varad Gautam wrote: > do_mq_timedreceive calls wq_sleep with a stack local address. The > sender (do_mq_timedsend) uses this address to later call > pipelined_send. > > This leads to a very hard to trigger race where a do_mq_timedreceive call > might return and leave do_mq_timedsend to rely on an invalid address, > causing the following crash: [...] > Fixes: c5b2cbdbdac563 ("ipc/mqueue.c: update/document memory barriers") > Fixes: 8116b54e7e23ef ("ipc/sem.c: document and update memory barriers") > Fixes: 0d97a82ba830d8 ("ipc/msg.c: update and document memory barriers") > Signed-off-by: Varad Gautam > Reported-by: Matthias von Faber > Cc: Christian Brauner > Cc: Oleg Nesterov > Cc: "Eric W. Biederman" > Cc: Manfred Spraul > Cc: Andrew Morton > Cc: Davidlohr Bueso > Cc: Manfred Spraul > --- > v2: Call wake_q_add before smp_store_release, instead of using a > get_task_struct/wake_q_add_safe combination across > smp_store_release. (Davidlohr Bueso) > v3: Comment/commit message fixup. > v4: - v2 / v3 have potential for introducing lost wakeups. Return to v1 > as the path-of-least-surprises to fix the race at hand. > - Also fix ipc/msg.c and ipc/sem.c which have the same usage > pattern.(Manfred Spraul) > Acked-by: Manfred Spraul I would recommend that you add cc:stable. The patch is obvious, and it is a bugfix. > > diff --git a/ipc/sem.c b/ipc/sem.c > index f6c30a85dadf..7d9c06b0ad6e 100644 > --- a/ipc/sem.c > +++ b/ipc/sem.c > @@ -784,12 +784,14 @@ static int perform_atomic_semop(struct sem_array *sma, struct sem_queue *q) > static inline void wake_up_sem_queue_prepare(struct sem_queue *q, int error, > struct wake_q_head *wake_q) > { > - get_task_struct(q->sleeper); > + struct task_struct *sleeper; > + > + sleeper = get_task_struct(q->sleeper); > > /* see SEM_BARRIER_2 for purpuse/pairing */ This collides with a spelling correction. s/purpuse/purpose/ required. --     Manfred