Received: by 2002:a05:7412:251c:b0:e2:908c:2ebd with SMTP id w28csp1103241rda; Mon, 23 Oct 2023 02:35:51 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFQxofvnToVFlF8T01KDwse5x9ln8qN3EVnA/7MGn82kxlN/OR2jNfoA9415OTOSI4iaQ9P X-Received: by 2002:a05:6a21:7747:b0:166:ef18:658e with SMTP id bc7-20020a056a21774700b00166ef18658emr7799574pzc.62.1698053750784; Mon, 23 Oct 2023 02:35:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698053750; cv=none; d=google.com; s=arc-20160816; b=LBIZOHoY8pdb/ddtCxjsmVFbC0BPkQ/g471trOgB/k+Zkblovpl86OvnlcFMe0cSxX fOzvNHJhsOA3HTYsGF1ChFeH00DE/OQXLWFElnNsSXty+ShN7mvWRvUx3jU1IJuvrWKN EHXQl6OMc22vrk/CtfYfdg/ynOXChLhxpkxTSFve9AmbjXyjqtljlzTkOrwlTX66mmce V+HRg0MY28OEDzccP+Dr0kyr/2MUKrIU2vzodmtyrLs21sFQRmEGSI6ceZ3IqyBYnwCX g3GIia/FRVG7Y9nNjrvDKmFDiQAiJ6my77WEqhzAGJFApWTtQ/Oprx2QORHz04ztUjeS ySTA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=TYFiOYEohrDzmqisFqeaJwXSZn4cv70zpQwC+z60tgw=; fh=xgk2BkB9u/EUNGJsk/8C7j+FM8iDpdjhcjc/uZVA4YY=; b=ty6RecaYRtbN3O1EOfSZLzSVAh2S+4geWcWW1nzVtk7Inp6JPsHilKjLkZwXfXdMXB hODmRfuEBbtARP/dPXqrSN0OubOtj7Ty2RtAi17+bOEPJWoQzaW67RxGFuJEQKbsgVPs Sv+e/r6xj9CsAri55kFTUWWlWrP2jYEoILkpHu6CNpu82BVdZ+66o9osvN64P13OjIJB GAlaQqiM4efcnxGlsDgD9IkkPpr6qqCruHrWgBXuFeXnuB5s+yTobuTo1aEGWTMcWUdD 3y839zA4mGo1OYdMjcLrnxZSCASb/8uQeKmalAsHwyBYlyccjHWbR+4sgBwBvN718SsN AaXQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from fry.vger.email (fry.vger.email. [23.128.96.38]) by mx.google.com with ESMTPS id bv125-20020a632e83000000b005859c81f1e9si6167140pgb.229.2023.10.23.02.35.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Oct 2023 02:35:50 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) client-ip=23.128.96.38; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by fry.vger.email (Postfix) with ESMTP id 27ACE809FA69; Mon, 23 Oct 2023 02:35:35 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229912AbjJWJfQ (ORCPT + 99 others); Mon, 23 Oct 2023 05:35:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57214 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233242AbjJWJfD (ORCPT ); Mon, 23 Oct 2023 05:35:03 -0400 Received: from smtp02.aussiebb.com.au (smtp02.aussiebb.com.au [IPv6:2403:5800:3:25::1002]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B18E41722; Mon, 23 Oct 2023 02:34:24 -0700 (PDT) Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp02.aussiebb.com.au (Postfix) with ESMTP id 387E710181C; Mon, 23 Oct 2023 20:34:17 +1100 (AEDT) X-Virus-Scanned: Debian amavisd-new at smtp02.aussiebb.com.au Received: from smtp02.aussiebb.com.au ([127.0.0.1]) by localhost (smtp02.aussiebb.com.au [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id RmsSVixHbriO; Mon, 23 Oct 2023 20:34:17 +1100 (AEDT) Received: by smtp02.aussiebb.com.au (Postfix, from userid 116) id 2E13F1026C5; Mon, 23 Oct 2023 20:34:17 +1100 (AEDT) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.vger.email X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 Received: from donald.themaw.com (159-196-82-144.9fc452.per.static.aussiebb.net [159.196.82.144]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: ian146@aussiebb.com.au) by smtp02.aussiebb.com.au (Postfix) with ESMTPSA id F363910181C; Mon, 23 Oct 2023 20:34:14 +1100 (AEDT) From: Ian Kent To: Arnd Bergmann , Anders Roxell , Dan Carpenter , Christian Brauner Cc: Naresh Kamboju , Bill O'Donnell , Kernel Mailing List , autofs mailing list , linux-fsdevel , Ian Kent , lkft-triage@lists.linaro.org, Stephen Rothwell , Linux Kernel Functional Testing Subject: [PATCH] autofs: fix add autofs_parse_fd() Date: Mon, 23 Oct 2023 17:33:59 +0800 Message-ID: <20231023093359.64265-1-raven@themaw.net> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (fry.vger.email [0.0.0.0]); Mon, 23 Oct 2023 02:35:35 -0700 (PDT) We are seeing systemd hang on its autofs direct mount at /proc/sys/fs/binfmt_misc. Historically this was due to a mismatch in the communication structure size between a 64 bit kernel and a 32 bit user space and was fixed by making the pipe communication record oriented. During autofs v5 development I decided to stay with the existing usage instead of changing to a packed structure for autofs <=> user space communications which turned out to be a mistake on my part. Problems arose and they were fixed by allowing for the 64 bit to 32 bit size difference in the automount(8) code. Along the way systemd started to use autofs and eventually encountered this problem too. systemd refused to compensate for the length difference insisting it be fixed in the kernel. Fortunately Linus implemented the packetized pipe which resolved the problem in a straight forward and simple way. In the autofs mount api conversion series I inadvertatly dropped the packet pipe flag settings when adding the autofs_parse_fd() function. This patch fixes that omission. Fixes: 546694b8f658 ("autofs: add autofs_parse_fd()") Signed-off-by: Ian Kent Cc: Bill O'Donnell Cc: Christian Brauner Cc: Arnd Bergmann Cc: Dan Carpenter Cc: Anders Roxell Cc: Naresh Kamboju Cc: Stephen Rothwell Reported-by: Linux Kernel Functional Testing Reported-by: Anders Roxell --- fs/autofs/autofs_i.h | 13 +++++++++---- fs/autofs/inode.c | 2 ++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/fs/autofs/autofs_i.h b/fs/autofs/autofs_i.h index 244f18cdf23c..8c1d587b3eef 100644 --- a/fs/autofs/autofs_i.h +++ b/fs/autofs/autofs_i.h @@ -221,15 +221,20 @@ static inline int autofs_check_pipe(struct file *pipe) return 0; } -static inline int autofs_prepare_pipe(struct file *pipe) +static inline void autofs_set_packet_pipe_flags(struct file *pipe) { - int ret = autofs_check_pipe(pipe); - if (ret < 0) - return ret; /* We want a packet pipe */ pipe->f_flags |= O_DIRECT; /* We don't expect -EAGAIN */ pipe->f_flags &= ~O_NONBLOCK; +} + +static inline int autofs_prepare_pipe(struct file *pipe) +{ + int ret = autofs_check_pipe(pipe); + if (ret < 0) + return ret; + autofs_set_packet_pipe_flags(pipe); return 0; } diff --git a/fs/autofs/inode.c b/fs/autofs/inode.c index 6d2e01c9057d..a3d62acc293a 100644 --- a/fs/autofs/inode.c +++ b/fs/autofs/inode.c @@ -177,6 +177,8 @@ static int autofs_parse_fd(struct fs_context *fc, struct autofs_sb_info *sbi, return -EBADF; } + autofs_set_packet_pipe_flags(pipe); + if (sbi->pipe) fput(sbi->pipe); -- 2.41.0