[{"id":3678447,"web_url":"http://patchwork.ozlabs.org/comment/3678447/","msgid":"<CAH2r5muqeJnStj+0GYJxy-TbaKB4k+zrJraYKobHFUCb0W0caA@mail.gmail.com>","list_archive_url":null,"date":"2026-04-17T01:37:26","subject":"Re: [PATCH] smb: client: fix dir separator in SMB1 UNIX mounts","submitter":{"id":510,"url":"http://patchwork.ozlabs.org/api/people/510/","name":"Steve French","email":"smfrench@gmail.com"},"content":"merged into cifs-2.6.git for-next\n\nOn Thu, Apr 16, 2026 at 7:15 PM Paulo Alcantara <pc@manguebit.org> wrote:\n>\n> When calling cifs_mount_get_tcon() with SMB1 UNIX mounts,\n> @cifs_sb->mnt_cifs_flags needs to be read or updated only after\n> calling reset_cifs_unix_caps(), otherwise it might end up with missing\n> CIFS_MOUNT_POSIXACL and CIFS_MOUNT_POSIX_PATHS bits.\n>\n> This fixes the wrong dir separator used in paths caused by the missing\n> CIFS_MOUNT_POSIX_PATHS bit in cifs_sb_info::mnt_cifs_flags.\n>\n> Reported-by: \"Kris Karas (Bug Reporting)\" <bugs-a21@moonlit-rail.com>\n> Closes: https://lore.kernel.org/r/f758f4ff-4d54-4244-931d-38f469c3ff14@moonlit-rail.com\n> Fixes: 4fc3a433c139 (\"smb: client: use atomic_t for mnt_cifs_flags\")\n> Signed-off-by: Paulo Alcantara (Red Hat) <pc@manguebit.org>\n> Cc: David Howells <dhowells@redhat.com>\n> Cc: linux-cifs@vger.kernel.org\n> Cc: stable@vger.kernel.org\n> ---\n>  fs/smb/client/connect.c | 10 +++++-----\n>  fs/smb/client/smb1ops.c | 19 ++++++++-----------\n>  2 files changed, 13 insertions(+), 16 deletions(-)\n>\n> diff --git a/fs/smb/client/connect.c b/fs/smb/client/connect.c\n> index 69b38f0ccf2b..e9eeb9f8a561 100644\n> --- a/fs/smb/client/connect.c\n> +++ b/fs/smb/client/connect.c\n> @@ -3610,7 +3610,6 @@ int cifs_mount_get_tcon(struct cifs_mount_ctx *mnt_ctx)\n>         server = mnt_ctx->server;\n>         ctx = mnt_ctx->fs_ctx;\n>         cifs_sb = mnt_ctx->cifs_sb;\n> -       sbflags = cifs_sb_flags(cifs_sb);\n>\n>         /* search for existing tcon to this server share */\n>         tcon = cifs_get_tcon(mnt_ctx->ses, ctx);\n> @@ -3625,9 +3624,10 @@ int cifs_mount_get_tcon(struct cifs_mount_ctx *mnt_ctx)\n>          * path (i.e., do not remap / and \\ and do not map any special characters)\n>          */\n>         if (tcon->posix_extensions) {\n> -               sbflags |= CIFS_MOUNT_POSIX_PATHS;\n> -               sbflags &= ~(CIFS_MOUNT_MAP_SFM_CHR |\n> -                            CIFS_MOUNT_MAP_SPECIAL_CHR);\n> +               atomic_or(CIFS_MOUNT_POSIX_PATHS, &cifs_sb->mnt_cifs_flags);\n> +               atomic_andnot(CIFS_MOUNT_MAP_SFM_CHR |\n> +                             CIFS_MOUNT_MAP_SPECIAL_CHR,\n> +                             &cifs_sb->mnt_cifs_flags);\n>         }\n>\n>  #ifdef CONFIG_CIFS_ALLOW_INSECURE_LEGACY\n> @@ -3651,6 +3651,7 @@ int cifs_mount_get_tcon(struct cifs_mount_ctx *mnt_ctx)\n>  #endif /* CONFIG_CIFS_ALLOW_INSECURE_LEGACY */\n>                 tcon->unix_ext = 0; /* server does not support them */\n>\n> +       sbflags = cifs_sb_flags(cifs_sb);\n>         /* do not care if a following call succeed - informational */\n>         if (!tcon->pipe && server->ops->qfs_tcon) {\n>                 server->ops->qfs_tcon(mnt_ctx->xid, tcon, cifs_sb);\n> @@ -3675,7 +3676,6 @@ int cifs_mount_get_tcon(struct cifs_mount_ctx *mnt_ctx)\n>\n>  out:\n>         mnt_ctx->tcon = tcon;\n> -       atomic_set(&cifs_sb->mnt_cifs_flags, sbflags);\n>         return rc;\n>  }\n>\n> diff --git a/fs/smb/client/smb1ops.c b/fs/smb/client/smb1ops.c\n> index 9694117050a6..e198e3dda917 100644\n> --- a/fs/smb/client/smb1ops.c\n> +++ b/fs/smb/client/smb1ops.c\n> @@ -49,7 +49,6 @@ void reset_cifs_unix_caps(unsigned int xid, struct cifs_tcon *tcon,\n>\n>         if (!CIFSSMBQFSUnixInfo(xid, tcon)) {\n>                 __u64 cap = le64_to_cpu(tcon->fsUnixInfo.Capability);\n> -               unsigned int sbflags;\n>\n>                 cifs_dbg(FYI, \"unix caps which server supports %lld\\n\", cap);\n>                 /*\n> @@ -76,29 +75,27 @@ void reset_cifs_unix_caps(unsigned int xid, struct cifs_tcon *tcon,\n>                 if (cap & CIFS_UNIX_TRANSPORT_ENCRYPTION_MANDATORY_CAP)\n>                         cifs_dbg(VFS, \"per-share encryption not supported yet\\n\");\n>\n> -               if (cifs_sb)\n> -                       sbflags = cifs_sb_flags(cifs_sb);\n> -\n>                 cap &= CIFS_UNIX_CAP_MASK;\n>                 if (ctx && ctx->no_psx_acl)\n>                         cap &= ~CIFS_UNIX_POSIX_ACL_CAP;\n>                 else if (CIFS_UNIX_POSIX_ACL_CAP & cap) {\n>                         cifs_dbg(FYI, \"negotiated posix acl support\\n\");\n> -                       if (cifs_sb)\n> -                               sbflags |= CIFS_MOUNT_POSIXACL;\n> +                       if (cifs_sb) {\n> +                               atomic_or(CIFS_MOUNT_POSIXACL,\n> +                                         &cifs_sb->mnt_cifs_flags);\n> +                       }\n>                 }\n>\n>                 if (ctx && ctx->posix_paths == 0)\n>                         cap &= ~CIFS_UNIX_POSIX_PATHNAMES_CAP;\n>                 else if (cap & CIFS_UNIX_POSIX_PATHNAMES_CAP) {\n>                         cifs_dbg(FYI, \"negotiate posix pathnames\\n\");\n> -                       if (cifs_sb)\n> -                               sbflags |= CIFS_MOUNT_POSIX_PATHS;\n> +                       if (cifs_sb) {\n> +                               atomic_or(CIFS_MOUNT_POSIX_PATHS,\n> +                                         &cifs_sb->mnt_cifs_flags);\n> +                       }\n>                 }\n>\n> -               if (cifs_sb)\n> -                       atomic_set(&cifs_sb->mnt_cifs_flags, sbflags);\n> -\n>                 cifs_dbg(FYI, \"Negotiate caps 0x%x\\n\", (int)cap);\n>  #ifdef CONFIG_CIFS_DEBUG2\n>                 if (cap & CIFS_UNIX_FCNTL_CAP)\n> --\n> 2.53.0\n>","headers":{"Return-Path":"\n <linux-cifs+bounces-10883-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-cifs@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=YNO0aZ7B;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c04:e001:36c::12fc:5321; helo=tor.lore.kernel.org;\n envelope-from=linux-cifs+bounces-10883-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com\n header.b=\"YNO0aZ7B\"","smtp.subspace.kernel.org;\n arc=pass smtp.client-ip=209.85.219.50","smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=gmail.com","smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=gmail.com"],"Received":["from tor.lore.kernel.org (tor.lore.kernel.org\n [IPv6:2600:3c04:e001:36c::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fxcvc0MQxz1yGt\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 Apr 2026 11:37:47 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby tor.lore.kernel.org (Postfix) with ESMTP id D766A3011A7E\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 Apr 2026 01:37:44 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 0EF3C2116F4;\n\tFri, 17 Apr 2026 01:37:42 +0000 (UTC)","from mail-qv1-f50.google.com (mail-qv1-f50.google.com\n [209.85.219.50])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 95203BA21\n\tfor <linux-cifs@vger.kernel.org>; Fri, 17 Apr 2026 01:37:40 +0000 (UTC)","by mail-qv1-f50.google.com with SMTP id\n 6a1803df08f44-8a068db9989so12215106d6.0\n        for <linux-cifs@vger.kernel.org>;\n Thu, 16 Apr 2026 18:37:40 -0700 (PDT)"],"ARC-Seal":["i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1776389861; cv=pass;\n b=kSOZGFwSqWT57BXkjkQFeIm2mxV0g4VhuquEjAkGs3X/gdoWRfYLbLbZ7sKQ17cHa6Evr0GPQAL/WHwgOkFtyucJ1OoyeCBXdYMsncRiGizZIqu3Bs/afNBj8OdeZ2FR02NjJEewDRi25WslW/d/Ollej6fbrL6gOfE8TrA5xKM=","i=1; a=rsa-sha256; t=1776389859; cv=none;\n        d=google.com; s=arc-20240605;\n        b=QXcnpJ2h1gblT22awvsfjqQJOsMRTgg7hMzuM6YxsvGMPwu58wLm+XuGc61P6SKMyy\n         i6Dne0DPX46TW8QgVFB2d7m76TI6XcO7rZi4iuIIXJ7+PJTGPC6EVSTcpmB1bKBVEVQR\n         /6ZYKHx+Bz3ia7hx9vWPU/sYUexiXMvw8q9cx5jzM5YpvXvyyNYsUkwg8zoLDHY9oXsK\n         9kBq1LlXb23h3ZQx818PcKWhRpNH0uwgLJ5Ja9PrkfY8V0cZrqs2o7T2f0qBbj4QNgmy\n         Zyyp7agK/GRvVT2sbG526fnj7EO2gDWz6JDClYnMXKk+x1Ob2jHBTCAnFPFfSpPaPe7p\n         NR0A=="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1776389861; c=relaxed/simple;\n\tbh=c8ZBS+V8jEtDvPVR1JijwtduvD5q8yXfJTgYKDWL6rA=;\n\th=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:\n\t To:Cc:Content-Type;\n b=eXay6BRLyleh2tHGyvJsA2CVOnz8uYvzK63qaZhM2PbI1x3KCnQxSPmmNfo5FUqovvIZm2JlldftotmQ7lKGzkHPG9fvgAQm+m3nP8DEvuoW91d1pgPMRPWmGUw8LZGdCZphvIqPHaFJu/6rmGUgt/CDr5Bxe/a7tPDS7C2soRQ=","i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n s=arc-20240605;\n        h=content-transfer-encoding:cc:to:subject:message-id:date:from\n         :in-reply-to:references:mime-version:dkim-signature;\n        bh=AdTij6DUQxjWdvtMNHhYJ/o6hImRsree6psuIVyyW6Q=;\n        fh=WyCtTtAtDDwpHXm+di9GcpEGXwWwv8hmV6qHqsaeuxs=;\n        b=Yl3C0TIQSlu16MHqXUgCD3lhdNB+tkj8ZdhbhEpeI4fynsSttPWrrmdCfafXvsQj1s\n         p070ImFpUaVcQ2zk/5iCAYtvZbsgcW7f/NO4C/yvH4o6vP2h3mvG2JlasWXS7G2K2rsR\n         +LICGugE//9J0LMc5BN+aS1gElSwLYLcc0KahiGU06kKQ9DhsCsdHRP7VaQc1ktT6+27\n         1NSTo7Gjv71mJ7BLcH3stD5zlBi3rjKWSzPkYIw6MW0BBhluyF6oxFae7+bUCyv38hq/\n         5VZ5wxVaCoxK+PVZBctdzadfvuGy/JPP9lMe0+eosz2Ekc/NQT4BjNxVbhf69UQNrra0\n         MYbw==;\n        darn=vger.kernel.org"],"ARC-Authentication-Results":["i=2; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=gmail.com;\n spf=pass smtp.mailfrom=gmail.com;\n dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com\n header.b=YNO0aZ7B; arc=pass smtp.client-ip=209.85.219.50","i=1; mx.google.com; arc=none"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=gmail.com; s=20251104; t=1776389859; x=1776994659;\n darn=vger.kernel.org;\n        h=content-transfer-encoding:cc:to:subject:message-id:date:from\n         :in-reply-to:references:mime-version:from:to:cc:subject:date\n         :message-id:reply-to;\n        bh=AdTij6DUQxjWdvtMNHhYJ/o6hImRsree6psuIVyyW6Q=;\n        b=YNO0aZ7BKl21SLO/YFdlsehEzBtrgzcw4K5vaQwa1Nb3vKnwDpM8anUGliFHnSAc07\n         c6fcX4SKo0U+tfvxk+BiG6WoQExLcS1h7Onw9vvXuf9vkOpJD7srYTfdCAT1r17d2WrM\n         npIdFOVy7Ql0RLGXalqEPb1sa7mmersHLf9EBF0NDr7gFSy5Q7sOq09q65+fiB0fnHPU\n         MaanNS8ciOClCKi3TKOP4N7X+2fvmsiefbWIlt013V7/twPbnx/NlOkYKNXgivjxzDQE\n         1L7wR5nICWFPhFeGEpeUPXReoCgjEcGZ/XVepUWmnD/y+ZrMviuV4zpXkoR9ui34NDjx\n         64Cw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=1e100.net; s=20251104; t=1776389859; x=1776994659;\n        h=content-transfer-encoding:cc:to:subject:message-id:date:from\n         :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from\n         :to:cc:subject:date:message-id:reply-to;\n        bh=AdTij6DUQxjWdvtMNHhYJ/o6hImRsree6psuIVyyW6Q=;\n        b=CN2oidexCUoaW/04578j2EkJpBVau/9CUdj/mXB3NZAt9LEzJhKk5x6BMbq9CIUk2W\n         osMd/9ck5cllkfZIPHTkglYWkVJ2iDJt+NpBfvFCz259+O+q8+bHunQ9sPfIojqGjmI2\n         r9fw9JJ/lJfAMbSiXoO9+Fx7dlmQpR890e9peQz1/kiYAeu8R4pE+aDXl6oHuNr6qQ5w\n         9gyfiJwHnj8mKFtzkl1CCstoka1aJeEkxUzLeaU13fsSUfUYKG4u1BIe/frOKn1TctfP\n         U9mS92pd/eSjfCVKSjP6JMf8vP5lR3df1/TeNfjVU+VG0rkjxTyij3/hssGbzKYHZLo3\n         s9MQ==","X-Forwarded-Encrypted":"i=1;\n AFNElJ8Ft3SMgL6Kf93BceWAFeJjFX8/RqMMnHKajirj4+hP4mZJ9iLH7ghwdILelIXIuUjRdjcSlw/Yi5Fw@vger.kernel.org","X-Gm-Message-State":"AOJu0YxyLcJzKGhx3OLVrdBr/U8py5wRhuFZgkr5xH+OZ89B1NnK7ND1\n\t9OElBGGj+v72pP0gLImEpycA+aq51eUO84XqLK/75/0lSaUBq17Isx/IXjwwMCrv+tL1B0tkkW7\n\tV1jL3LDsFu7JFmV6Ev2y/4vHhpyCAZBU=","X-Gm-Gg":"AeBDietvEg5OcJk/kqD1E0QtL6Gui8/WkLPOZTJhP3QMxwInAshDZOWrjd/406SLh2R\n\tvvfi+fJCAGUXeRhBGfWRxJ9uhkH99pjI2RCYu/t7xvq2K8mNH/NnKyRQv0Vh+1Oi1udG08NwK7E\n\tn853zK+NmY9gn2VnOk/fCLfof/oXt8ckigilzhPfAXATS5B1YuSYFRA2tz84keohPH0DSYxKSFQ\n\tobqMSdNvEbp/anc9Yu8hBiXJ7AYtilTRHKlA1YrE35yjB/Uay/4WRLyUYG0Ey6n+KROdGgtf8Fw\n\t+6PzFB6jO7z5oKfmBKkMYBP2Bp85l97Hqdy88fv6IHVJXdj5lce2L7Nmgy6OyVy/ziEIW5+wRG2\n\t2IBkrGg4MipAi+Oum+G8crjkkoaCT1vjGiAzx0eQXG35yipsbU76JIamM/N4s4+GObvbA8/Kzoo\n\te2dXS/4MbqUVIQSE4Ta9Q3VQbOVHn4jNE=","X-Received":"by 2002:a05:6214:459d:b0:8ac:dd87:b5b2 with SMTP id\n 6a1803df08f44-8b028449ed8mr12457736d6.11.1776389859572; Thu, 16 Apr 2026\n 18:37:39 -0700 (PDT)","Precedence":"bulk","X-Mailing-List":"linux-cifs@vger.kernel.org","List-Id":"<linux-cifs.vger.kernel.org>","List-Subscribe":"<mailto:linux-cifs+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-cifs+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","References":"<20260417001550.1301260-1-pc@manguebit.org>","In-Reply-To":"<20260417001550.1301260-1-pc@manguebit.org>","From":"Steve French <smfrench@gmail.com>","Date":"Thu, 16 Apr 2026 20:37:26 -0500","X-Gm-Features":"AQROBzA7pmGYPnGr8dfpwgDqbhVLgCR2YE9UKmwwY9P7HtfxqYl92b86f-VG8E4","Message-ID":"\n <CAH2r5muqeJnStj+0GYJxy-TbaKB4k+zrJraYKobHFUCb0W0caA@mail.gmail.com>","Subject":"Re: [PATCH] smb: client: fix dir separator in SMB1 UNIX mounts","To":"Paulo Alcantara <pc@manguebit.org>","Cc":"\"Kris Karas (Bug Reporting)\" <bugs-a21@moonlit-rail.com>,\n David Howells <dhowells@redhat.com>,\n\tlinux-cifs@vger.kernel.org, stable@vger.kernel.org","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable"}}]