From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751685AbdKTW7i (ORCPT ); Mon, 20 Nov 2017 17:59:38 -0500 Received: from smtp.codeaurora.org ([198.145.29.96]:41966 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751159AbdKTW7g (ORCPT ); Mon, 20 Nov 2017 17:59:36 -0500 DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 99FD86024A Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=none smtp.mailfrom=awallis@codeaurora.org Subject: Re: [PATCH] Revert "async: simplify lowest_in_progress()" To: Rasmus Villemoes , Tejun Heo , Arjan van de Ven Cc: stable@vger.kernel.org, Lai Jiangshan , linux-kernel@vger.kernel.org References: <20171120225147.3880-1-linux@rasmusvillemoes.dk> From: Adam Wallis Message-ID: <0c3b980a-7360-4698-80d9-5f58c608850a@codeaurora.org> Date: Mon, 20 Nov 2017 17:59:33 -0500 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: <20171120225147.3880-1-linux@rasmusvillemoes.dk> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 11/20/2017 5:51 PM, Rasmus Villemoes wrote: > This reverts commit 92266d6ef60c2381c980c6cdcb2a5c1667b36b49, which > was simply wrong: In the case where domain is NULL, we now use the > wrong offsetof() in the list_first_entry macro, so we don't actually > fetch the ->cookie value, but rather the eight bytes located > sizeof(struct list_head) further into the struct async_entry. > > On 64 bit, that's the data member, while on 32 bit, we get a u64 built > from func and data in some order. > > I think the bug happens to be harmless in practice: It obviously only > affects callers which pass a NULL domain, and AFAICT the only such > caller is > > async_synchronize_full() -> > async_synchronize_full_domain(NULL) -> > async_synchronize_cookie_domain(ASYNC_COOKIE_MAX, NULL) > > and the ASYNC_COOKIE_MAX means that in practice we end up waiting for > the async_global_pending list to be empty - but it would break if > somebody happened to pass (void*)-1 as the data element to > async_schedule, and of course also if somebody ever does a > async_synchronize_cookie_domain(, NULL) with a "finite" cookie value. > > Cc: stable@vger.kernel.org # 3.10+ Recommend adding "Fixes" notation here referencing the original broken commit. > Signed-off-by: Rasmus Villemoes > --- [..] -- Adam Wallis Qualcomm Datacenter Technologies as an affiliate of Qualcomm Technologies, Inc. Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.