[{"id":3684991,"web_url":"http://patchwork.ozlabs.org/comment/3684991/","msgid":"<CAH2r5mvNHedEymrmCYCbghmdv1OLcbVPstnrSZooLXavKkc4Kw@mail.gmail.com>","list_archive_url":null,"date":"2026-05-01T00:09:19","subject":"Re: [PATCH] cifssmb: use struct_offset in memcpy calculations","submitter":{"id":510,"url":"http://patchwork.ozlabs.org/api/people/510/","name":"Steve French","email":"smfrench@gmail.com"},"content":"Seems clearer to leave in the cast so it is a memcpy from char * to char *\n\n           memcpy((char *) pFindData,\n\nOn Thu, Apr 30, 2026 at 5:06 PM Rosen Penev <rosenp@gmail.com> wrote:\n>\n> It seems W=1/FORTIFY_SOURCE is getting confused about the math here.\n>\n> Use struct_offset to point FORTIFY_SOURCE to the correct place.\n>\n> Remove response_data variables and directly apply to memcpy. Simpler\n> and avoids excess casting.\n>\n> Signed-off-by: Rosen Penev <rosenp@gmail.com>\n> ---\n>  fs/smb/client/cifssmb.c | 40 +++++++++++++---------------------------\n>  1 file changed, 13 insertions(+), 27 deletions(-)\n>\n> diff --git a/fs/smb/client/cifssmb.c b/fs/smb/client/cifssmb.c\n> index 3990a9012264..8598cec5ebbd 100644\n> --- a/fs/smb/client/cifssmb.c\n> +++ b/fs/smb/client/cifssmb.c\n> @@ -4090,9 +4090,9 @@ CIFSSMBQFileInfo(const unsigned int xid, struct cifs_tcon *tcon,\n>                                       get_bcc(&pSMBr->hdr), 40);\n>                 else if (pFindData) {\n>                         __u16 data_offset = le16_to_cpu(pSMBr->t2.DataOffset);\n> -                       memcpy((char *) pFindData,\n> -                              (char *) &pSMBr->hdr.Protocol +\n> -                              data_offset, sizeof(FILE_ALL_INFO));\n> +                       memcpy(pFindData,\n> +                              (char *)pSMBr + struct_offset(pSMBr, hdr.Protocol) + data_offset,\n> +                              sizeof(FILE_ALL_INFO));\n>                 } else\n>                     rc = -ENOMEM;\n>         }\n> @@ -4264,9 +4264,8 @@ CIFSSMBUnixQFileInfo(const unsigned int xid, struct cifs_tcon *tcon,\n>                                       get_bcc(&pSMBr->hdr), sizeof(FILE_UNIX_BASIC_INFO));\n>                 } else {\n>                         __u16 data_offset = le16_to_cpu(pSMBr->t2.DataOffset);\n> -                       memcpy((char *) pFindData,\n> -                              (char *) &pSMBr->hdr.Protocol +\n> -                              data_offset,\n> +                       memcpy(pFindData,\n> +                              (char *)pSMBr + struct_offset(pSMBr, hdr.Protocol) + data_offset,\n>                                sizeof(FILE_UNIX_BASIC_INFO));\n>                 }\n>         }\n> @@ -4349,9 +4348,8 @@ CIFSSMBUnixQPathInfo(const unsigned int xid, struct cifs_tcon *tcon,\n>                                       get_bcc(&pSMBr->hdr), sizeof(FILE_UNIX_BASIC_INFO));\n>                 } else {\n>                         __u16 data_offset = le16_to_cpu(pSMBr->t2.DataOffset);\n> -                       memcpy((char *) pFindData,\n> -                              (char *) &pSMBr->hdr.Protocol +\n> -                              data_offset,\n> +                       memcpy(pFindData,\n> +                              (char *)pSMBr + struct_offset(pSMBr, hdr.Protocol) + data_offset,\n>                                sizeof(FILE_UNIX_BASIC_INFO));\n>                 }\n>         }\n> @@ -5079,7 +5077,6 @@ CIFSSMBQFSAttributeInfo(const unsigned int xid, struct cifs_tcon *tcon)\n>  /* level 0x105  SMB_QUERY_FILE_SYSTEM_INFO */\n>         TRANSACTION2_QFSI_REQ *pSMB = NULL;\n>         TRANSACTION2_QFSI_RSP *pSMBr = NULL;\n> -       FILE_SYSTEM_ATTRIBUTE_INFO *response_data;\n>         unsigned int in_len;\n>         int rc = 0;\n>         int bytes_returned = 0;\n> @@ -5130,11 +5127,8 @@ CIFSSMBQFSAttributeInfo(const unsigned int xid, struct cifs_tcon *tcon)\n>                                       get_bcc(&pSMBr->hdr), 13);\n>                 } else {\n>                         __u16 data_offset = le16_to_cpu(pSMBr->t2.DataOffset);\n> -                       response_data =\n> -                           (FILE_SYSTEM_ATTRIBUTE_INFO\n> -                            *) (((char *) &pSMBr->hdr.Protocol) +\n> -                                data_offset);\n> -                       memcpy(&tcon->fsAttrInfo, response_data,\n> +                       memcpy(&tcon->fsAttrInfo,\n> +                              (char *)pSMBr + struct_offset(pSMBr, hdr.Protocol) + data_offset,\n>                                sizeof(FILE_SYSTEM_ATTRIBUTE_INFO));\n>                 }\n>         }\n> @@ -5152,7 +5146,6 @@ CIFSSMBQFSDeviceInfo(const unsigned int xid, struct cifs_tcon *tcon)\n>  /* level 0x104 SMB_QUERY_FILE_SYSTEM_INFO */\n>         TRANSACTION2_QFSI_REQ *pSMB = NULL;\n>         TRANSACTION2_QFSI_RSP *pSMBr = NULL;\n> -       FILE_SYSTEM_DEVICE_INFO *response_data;\n>         unsigned int in_len;\n>         int rc = 0;\n>         int bytes_returned = 0;\n> @@ -5205,11 +5198,8 @@ CIFSSMBQFSDeviceInfo(const unsigned int xid, struct cifs_tcon *tcon)\n>                                       sizeof(FILE_SYSTEM_DEVICE_INFO));\n>                 else {\n>                         __u16 data_offset = le16_to_cpu(pSMBr->t2.DataOffset);\n> -                       response_data =\n> -                           (FILE_SYSTEM_DEVICE_INFO *)\n> -                               (((char *) &pSMBr->hdr.Protocol) +\n> -                                data_offset);\n> -                       memcpy(&tcon->fsDevInfo, response_data,\n> +                       memcpy(&tcon->fsDevInfo,\n> +                              (char *)pSMBr + struct_offset(pSMBr, hdr.Protocol) + data_offset,\n>                                sizeof(FILE_SYSTEM_DEVICE_INFO));\n>                 }\n>         }\n> @@ -5227,7 +5217,6 @@ CIFSSMBQFSUnixInfo(const unsigned int xid, struct cifs_tcon *tcon)\n>  /* level 0x200  SMB_QUERY_CIFS_UNIX_INFO */\n>         TRANSACTION2_QFSI_REQ *pSMB = NULL;\n>         TRANSACTION2_QFSI_RSP *pSMBr = NULL;\n> -       FILE_SYSTEM_UNIX_INFO *response_data;\n>         unsigned int in_len;\n>         int rc = 0;\n>         int bytes_returned = 0;\n> @@ -5277,11 +5266,8 @@ CIFSSMBQFSUnixInfo(const unsigned int xid, struct cifs_tcon *tcon)\n>                                       get_bcc(&pSMBr->hdr), 13);\n>                 } else {\n>                         __u16 data_offset = le16_to_cpu(pSMBr->t2.DataOffset);\n> -                       response_data =\n> -                           (FILE_SYSTEM_UNIX_INFO\n> -                            *) (((char *) &pSMBr->hdr.Protocol) +\n> -                                data_offset);\n> -                       memcpy(&tcon->fsUnixInfo, response_data,\n> +                       memcpy(&tcon->fsUnixInfo,\n> +                              (char *)pSMBr + struct_offset(pSMBr, hdr.Protocol) + data_offset,\n>                                sizeof(FILE_SYSTEM_UNIX_INFO));\n>                 }\n>         }\n> --\n> 2.54.0\n>\n>","headers":{"Return-Path":"\n <linux-cifs+bounces-11317-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=ej0Q5oBD;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.234.253.10; helo=sea.lore.kernel.org;\n envelope-from=linux-cifs+bounces-11317-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=\"ej0Q5oBD\"","smtp.subspace.kernel.org;\n arc=pass smtp.client-ip=209.85.219.41","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 sea.lore.kernel.org (sea.lore.kernel.org [172.234.253.10])\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 4g6BNp3gwgz1y1d\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 01 May 2026 10:14:18 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 644AB3021EB8\n\tfor <incoming@patchwork.ozlabs.org>; Fri,  1 May 2026 00:09:35 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id E7F422836F;\n\tFri,  1 May 2026 00:09:34 +0000 (UTC)","from mail-qv1-f41.google.com (mail-qv1-f41.google.com\n [209.85.219.41])\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 68A7E28E00\n\tfor <linux-cifs@vger.kernel.org>; Fri,  1 May 2026 00:09:33 +0000 (UTC)","by mail-qv1-f41.google.com with SMTP id\n 6a1803df08f44-8aca6bd57cfso12852906d6.0\n        for <linux-cifs@vger.kernel.org>;\n Thu, 30 Apr 2026 17:09:33 -0700 (PDT)"],"ARC-Seal":["i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1777594174; cv=pass;\n b=BH8sJgT1jMjk7mPo8paqgMQVALE39q1XwE9o7yrnaZYWVCN5VoQfs8++E6GUm0BZmssqkQLGltFpXU7GtB4xw2iP7qScKnQP3G3n7bWmtB8V+4bKJebdBtxPSdMURF/VHer+mEcIOIoz0pqBmrQ2EprMRhNAhf9ZRlo3+70T3A0=","i=1; a=rsa-sha256; t=1777594172; cv=none;\n        d=google.com; s=arc-20240605;\n        b=PFMgoPcJ8uR1SBopMnoI4tVSUPdOyiLM4ajtn/zV+Tr1YDdpxffZHaOt0gGklEVy19\n         Vp/a14lrxhDqYdx8uwDX+54rkaqpzemLlmxNuwqtZzL8lq6xKqH/aknyDrBq9p43exJi\n         4ef+a+VU6OENggIThdM49iZsEFiztV+pGsLozybK12zmBy0cvxhExwsFhHNamOdHDNRd\n         xetb+7KE3RxV4zT9oU5NP8nQQzdo3mfJoBxa9ciFblVTvhsyXUPHjsyLClbd6TWbE5i7\n         p0jl/iUbsni0mBLlHDiaq8Iay1QlXZG6QOqzSNdIP8ab/8XFojHOd80X0h1nsLwikTiC\n         D0Ig=="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1777594174; c=relaxed/simple;\n\tbh=PE1/3S+he+KI20uXj2b7qjJL0Z7zNGU1+fyETMz6Dwg=;\n\th=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:\n\t To:Cc:Content-Type;\n b=K9gx5/6+FO7DdiZ0qF3Ol9XjyhXQr/9jHPf1MDuKDSTDxhL/LHCL1pYHjj/lgTqsK45USFjaCujKsJsY1hVrGRJ9lIPGMo83A3vI6FGkjF4ON4jM37y/WszQtVHu51j09BstUbsVDl83B/6rg7bdXVDy22yrjdr78PMN+A9BD0w=","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=5IYpuakU8c4Z1hffhq097EhGBs3XtcW4cNQFmZrV9QM=;\n        fh=sREvkurtnIGNiqBo1A8Rxha4HJcW3fpJEpmqCd2RCIM=;\n        b=a1CJKp1iJGjY1kdCyaJNyawFwWrZPDVyFp0aIBXxsaW/WrqsMEH9ZyG0mldy9JOmCx\n         JsJ70Gc4vbetexQg0qY+RFLME/IxISTsbddpG6Hh/ZEWOY1gkQZgqE6LQ38Vy9BbG/t4\n         88rk5IYCT8RYyn6MH1jv5RVuOjEwFqDixUmT2VnKinHDIQYVsJLmO1nftfPXPtBmySJH\n         GITU6dOJm7E+FJJDXntb+qdIm0Z3+1ggjKQFYJpa8P0gfdSCK3rEJLBVLZWviF+xaHRt\n         n54NAHttT08I0YzynRgbXS9T3O6Qvfbx3/QxMeXbLSP79rLnrAes1XEF3uUNDYj5tp4p\n         RNtQ==;\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=ej0Q5oBD; arc=pass smtp.client-ip=209.85.219.41","i=1; mx.google.com; arc=none"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=gmail.com; s=20251104; t=1777594172; x=1778198972;\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=5IYpuakU8c4Z1hffhq097EhGBs3XtcW4cNQFmZrV9QM=;\n        b=ej0Q5oBDlZxhcD3x77rdA+uBO/Q7dAuklCO9NhKGeu2c+BIAYUXlkaM/9pKwSWEA2j\n         mBOWsxwg/bPYjtLriPrUm+DG/B8q2BEPjkNi97H1lsMB5RsUZf8yY0hri3aMf2fwhsIu\n         c7dPY+YpGgT84XcQY/Pdz9CjgND6H7Ft4PyydFAqlpgU+1ymgSpF6hOnM1so3nms0HFn\n         CgYx+iyf3Ivz9s9UkKvAC15a/LypLbz59rJWCiOva9jeMJLfocuNfL/5SnqXb+i3y3ox\n         qRgGQKxl1AWnedrRvgPLtrjv0F8RZIXSnwx3fR8PUTXiOkIzzf7FxVCVSAEMWL+u2TiQ\n         YNTw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=1e100.net; s=20251104; t=1777594172; x=1778198972;\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=5IYpuakU8c4Z1hffhq097EhGBs3XtcW4cNQFmZrV9QM=;\n        b=Q8BMy7RQECr6+coBC2WKKONnFeJasWkoIypmRa1gNpCl3G/275lsXJ+eMP6phLUj8e\n         xefHclLYhCyRRK5v52A0usDDvDdrX4p1dQ5j5966AKI8V/qDXq+0MWZqsyFWUDLJrGMM\n         Zx6IfTR0ayL10X9xPq2+m2RGeX15t3RblFw3pYKnik5OeW9K6dZGZESdrjIFN9joyDiH\n         Tx0qBjIOfI+5Sgb58ET97j8S3v2nInc4+UV5gSvqBNWU4fCyOZ7ngDdVLBR07Q/MluXN\n         LEN8TVEy5rycOYx0P3mErskpNU3AMTgRQyC6B0DNDSTviexOjvuJY9xpZuEgQD0NdGF8\n         ++bQ==","X-Gm-Message-State":"AOJu0YxhEdvnLUxjPLPAHZr4DqrwzblnwNs5DTwJ2+daM3OiihuSRLqs\n\tEH0wgY28WPf6tmXf0PbQdo32foJQmxCwJL9nWj+WkRLr+/D/p+brb2dc7gi2zAHgNU58vPl/MkF\n\tb+e7dxyHPhYGg85zXgnEPYjyf4NFW1d79hB/u45M=","X-Gm-Gg":"AeBDieubSFI41yfMuwUW28y1Hl9J4Ez/KZ+o24WuxHZE+8U9LSXz1mPxS/9d6U0991Z\n\tflrFIebYsOJvlxrYBZKDx9If7Yn5dNHssLT0MvatJnBneBmBKI9nV9JjbAzKxzm2HY08mTXJg/1\n\tJdMWobrGgi3qFVl/bLG9Cb9z2DaOnOqBYBVdOMzIxWEHP7yhkX02dH240uwMH4ZCRarDZODOeV8\n\tCei9fbKPn6TUipQeUiuQ4Inp85aPXP77tczJHTMNqJKFUyS/Jf3jRk7ejLL1TSoql2pNmorwam1\n\tS/zF39SDBQ2eWVKs//qiOIhN3eoR0mlnl/o52y1uR0bRIG+U7z+BcpZvCZ2irbHCcmyClW9YeCz\n\t0svfF7EhTrGIQQ4XTCRUskh+EQEPKh1RkSahsJyUgB+etPbm/dkIs9GEaLUcmmdCdm8bJn04=","X-Received":"by 2002:a05:6214:21c7:b0:8b4:9a1e:bbe7 with SMTP id\n 6a1803df08f44-8b49a1ebc7dmr57061966d6.3.1777594172243; Thu, 30 Apr 2026\n 17:09:32 -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":"<20260430220601.76266-1-rosenp@gmail.com>","In-Reply-To":"<20260430220601.76266-1-rosenp@gmail.com>","From":"Steve French <smfrench@gmail.com>","Date":"Thu, 30 Apr 2026 19:09:19 -0500","X-Gm-Features":"AVHnY4IbRSCoEPhCVymhGIHbC7kZSeuXeSoP6DvlIvsKxNqqSzw21Xc8RwadaJY","Message-ID":"\n <CAH2r5mvNHedEymrmCYCbghmdv1OLcbVPstnrSZooLXavKkc4Kw@mail.gmail.com>","Subject":"Re: [PATCH] cifssmb: use struct_offset in memcpy calculations","To":"Rosen Penev <rosenp@gmail.com>","Cc":"linux-cifs@vger.kernel.org, Steve French <sfrench@samba.org>,\n\tPaulo Alcantara <pc@manguebit.org>,\n Ronnie Sahlberg <ronniesahlberg@gmail.com>,\n\tShyam Prasad N <sprasad@microsoft.com>, Tom Talpey <tom@talpey.com>,\n\tBharath SM <bharathsm@microsoft.com>,\n\t\"moderated list:COMMON INTERNET FILE SYSTEM CLIENT (CIFS and SMB3)\"\n <samba-technical@lists.samba.org>, open list <linux-kernel@vger.kernel.org>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable"}},{"id":3684993,"web_url":"http://patchwork.ozlabs.org/comment/3684993/","msgid":"<CAKxU2N_m8+Rd8Q0Ty7sk0_bANdyagy9KTc8GM=hHu=FbwRbaYg@mail.gmail.com>","list_archive_url":null,"date":"2026-05-01T00:27:14","subject":"Re: [PATCH] cifssmb: use struct_offset in memcpy calculations","submitter":{"id":70304,"url":"http://patchwork.ozlabs.org/api/people/70304/","name":"Rosen Penev","email":"rosenp@gmail.com"},"content":"On Thu, Apr 30, 2026 at 5:09 PM Steve French <smfrench@gmail.com> wrote:\n>\n> Seems clearer to leave in the cast so it is a memcpy from char * to char *\nWill fix in v2. Can't say I agree though.\n>\n>            memcpy((char *) pFindData,\n>\n> On Thu, Apr 30, 2026 at 5:06 PM Rosen Penev <rosenp@gmail.com> wrote:\n> >\n> > It seems W=1/FORTIFY_SOURCE is getting confused about the math here.\n> >\n> > Use struct_offset to point FORTIFY_SOURCE to the correct place.\n> >\n> > Remove response_data variables and directly apply to memcpy. Simpler\n> > and avoids excess casting.\n> >\n> > Signed-off-by: Rosen Penev <rosenp@gmail.com>\n> > ---\n> >  fs/smb/client/cifssmb.c | 40 +++++++++++++---------------------------\n> >  1 file changed, 13 insertions(+), 27 deletions(-)\n> >\n> > diff --git a/fs/smb/client/cifssmb.c b/fs/smb/client/cifssmb.c\n> > index 3990a9012264..8598cec5ebbd 100644\n> > --- a/fs/smb/client/cifssmb.c\n> > +++ b/fs/smb/client/cifssmb.c\n> > @@ -4090,9 +4090,9 @@ CIFSSMBQFileInfo(const unsigned int xid, struct cifs_tcon *tcon,\n> >                                       get_bcc(&pSMBr->hdr), 40);\n> >                 else if (pFindData) {\n> >                         __u16 data_offset = le16_to_cpu(pSMBr->t2.DataOffset);\n> > -                       memcpy((char *) pFindData,\n> > -                              (char *) &pSMBr->hdr.Protocol +\n> > -                              data_offset, sizeof(FILE_ALL_INFO));\n> > +                       memcpy(pFindData,\n> > +                              (char *)pSMBr + struct_offset(pSMBr, hdr.Protocol) + data_offset,\n> > +                              sizeof(FILE_ALL_INFO));\n> >                 } else\n> >                     rc = -ENOMEM;\n> >         }\n> > @@ -4264,9 +4264,8 @@ CIFSSMBUnixQFileInfo(const unsigned int xid, struct cifs_tcon *tcon,\n> >                                       get_bcc(&pSMBr->hdr), sizeof(FILE_UNIX_BASIC_INFO));\n> >                 } else {\n> >                         __u16 data_offset = le16_to_cpu(pSMBr->t2.DataOffset);\n> > -                       memcpy((char *) pFindData,\n> > -                              (char *) &pSMBr->hdr.Protocol +\n> > -                              data_offset,\n> > +                       memcpy(pFindData,\n> > +                              (char *)pSMBr + struct_offset(pSMBr, hdr.Protocol) + data_offset,\n> >                                sizeof(FILE_UNIX_BASIC_INFO));\n> >                 }\n> >         }\n> > @@ -4349,9 +4348,8 @@ CIFSSMBUnixQPathInfo(const unsigned int xid, struct cifs_tcon *tcon,\n> >                                       get_bcc(&pSMBr->hdr), sizeof(FILE_UNIX_BASIC_INFO));\n> >                 } else {\n> >                         __u16 data_offset = le16_to_cpu(pSMBr->t2.DataOffset);\n> > -                       memcpy((char *) pFindData,\n> > -                              (char *) &pSMBr->hdr.Protocol +\n> > -                              data_offset,\n> > +                       memcpy(pFindData,\n> > +                              (char *)pSMBr + struct_offset(pSMBr, hdr.Protocol) + data_offset,\n> >                                sizeof(FILE_UNIX_BASIC_INFO));\n> >                 }\n> >         }\n> > @@ -5079,7 +5077,6 @@ CIFSSMBQFSAttributeInfo(const unsigned int xid, struct cifs_tcon *tcon)\n> >  /* level 0x105  SMB_QUERY_FILE_SYSTEM_INFO */\n> >         TRANSACTION2_QFSI_REQ *pSMB = NULL;\n> >         TRANSACTION2_QFSI_RSP *pSMBr = NULL;\n> > -       FILE_SYSTEM_ATTRIBUTE_INFO *response_data;\n> >         unsigned int in_len;\n> >         int rc = 0;\n> >         int bytes_returned = 0;\n> > @@ -5130,11 +5127,8 @@ CIFSSMBQFSAttributeInfo(const unsigned int xid, struct cifs_tcon *tcon)\n> >                                       get_bcc(&pSMBr->hdr), 13);\n> >                 } else {\n> >                         __u16 data_offset = le16_to_cpu(pSMBr->t2.DataOffset);\n> > -                       response_data =\n> > -                           (FILE_SYSTEM_ATTRIBUTE_INFO\n> > -                            *) (((char *) &pSMBr->hdr.Protocol) +\n> > -                                data_offset);\n> > -                       memcpy(&tcon->fsAttrInfo, response_data,\n> > +                       memcpy(&tcon->fsAttrInfo,\n> > +                              (char *)pSMBr + struct_offset(pSMBr, hdr.Protocol) + data_offset,\n> >                                sizeof(FILE_SYSTEM_ATTRIBUTE_INFO));\n> >                 }\n> >         }\n> > @@ -5152,7 +5146,6 @@ CIFSSMBQFSDeviceInfo(const unsigned int xid, struct cifs_tcon *tcon)\n> >  /* level 0x104 SMB_QUERY_FILE_SYSTEM_INFO */\n> >         TRANSACTION2_QFSI_REQ *pSMB = NULL;\n> >         TRANSACTION2_QFSI_RSP *pSMBr = NULL;\n> > -       FILE_SYSTEM_DEVICE_INFO *response_data;\n> >         unsigned int in_len;\n> >         int rc = 0;\n> >         int bytes_returned = 0;\n> > @@ -5205,11 +5198,8 @@ CIFSSMBQFSDeviceInfo(const unsigned int xid, struct cifs_tcon *tcon)\n> >                                       sizeof(FILE_SYSTEM_DEVICE_INFO));\n> >                 else {\n> >                         __u16 data_offset = le16_to_cpu(pSMBr->t2.DataOffset);\n> > -                       response_data =\n> > -                           (FILE_SYSTEM_DEVICE_INFO *)\n> > -                               (((char *) &pSMBr->hdr.Protocol) +\n> > -                                data_offset);\n> > -                       memcpy(&tcon->fsDevInfo, response_data,\n> > +                       memcpy(&tcon->fsDevInfo,\n> > +                              (char *)pSMBr + struct_offset(pSMBr, hdr.Protocol) + data_offset,\n> >                                sizeof(FILE_SYSTEM_DEVICE_INFO));\n> >                 }\n> >         }\n> > @@ -5227,7 +5217,6 @@ CIFSSMBQFSUnixInfo(const unsigned int xid, struct cifs_tcon *tcon)\n> >  /* level 0x200  SMB_QUERY_CIFS_UNIX_INFO */\n> >         TRANSACTION2_QFSI_REQ *pSMB = NULL;\n> >         TRANSACTION2_QFSI_RSP *pSMBr = NULL;\n> > -       FILE_SYSTEM_UNIX_INFO *response_data;\n> >         unsigned int in_len;\n> >         int rc = 0;\n> >         int bytes_returned = 0;\n> > @@ -5277,11 +5266,8 @@ CIFSSMBQFSUnixInfo(const unsigned int xid, struct cifs_tcon *tcon)\n> >                                       get_bcc(&pSMBr->hdr), 13);\n> >                 } else {\n> >                         __u16 data_offset = le16_to_cpu(pSMBr->t2.DataOffset);\n> > -                       response_data =\n> > -                           (FILE_SYSTEM_UNIX_INFO\n> > -                            *) (((char *) &pSMBr->hdr.Protocol) +\n> > -                                data_offset);\n> > -                       memcpy(&tcon->fsUnixInfo, response_data,\n> > +                       memcpy(&tcon->fsUnixInfo,\n> > +                              (char *)pSMBr + struct_offset(pSMBr, hdr.Protocol) + data_offset,\n> >                                sizeof(FILE_SYSTEM_UNIX_INFO));\n> >                 }\n> >         }\n> > --\n> > 2.54.0\n> >\n> >\n>\n>\n> --\n> Thanks,\n>\n> Steve","headers":{"Return-Path":"\n <linux-cifs+bounces-11318-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=Wk5OyGMT;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-cifs+bounces-11318-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=\"Wk5OyGMT\"","smtp.subspace.kernel.org;\n arc=pass smtp.client-ip=209.85.218.53","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 sea.lore.kernel.org (sea.lore.kernel.org\n [IPv6:2600:3c0a:e001:db::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g6Bhr4N1Qz1y1d\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 01 May 2026 10:28:12 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id AB1AD30376A6\n\tfor <incoming@patchwork.ozlabs.org>; Fri,  1 May 2026 00:27:34 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 87D1B220F2D;\n\tFri,  1 May 2026 00:27:34 +0000 (UTC)","from mail-ej1-f53.google.com (mail-ej1-f53.google.com\n [209.85.218.53])\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 F1B051F4174\n\tfor <linux-cifs@vger.kernel.org>; Fri,  1 May 2026 00:27:32 +0000 (UTC)","by mail-ej1-f53.google.com with SMTP id\n a640c23a62f3a-b9c3e2cf3c0so244720866b.1\n        for <linux-cifs@vger.kernel.org>;\n Thu, 30 Apr 2026 17:27:32 -0700 (PDT)"],"ARC-Seal":["i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1777595254; cv=pass;\n b=oOS4puVVOJ+BqNhS/OUCmSiYOwYUhg3JvYX3WLpu75ausVVaWQxpcuIms240p4NwZZkXPJiqSqG8L4/lOSbk1aSgzKbBfwb24ZZ7jh2OZ2Eg2zzias20srkRiGx3D7OR/GSVqFMaAi+LDZ3sWGSi5PEl1fSthRtIbqpdKkaqll4=","i=1; a=rsa-sha256; t=1777595251; cv=none;\n        d=google.com; s=arc-20240605;\n        b=ZpdrwDNlR2TwFlvP5PRwFB8zXL6we5jHcBPtLwTHux3VeCf2PynNtxkesy1Fy8VCb+\n         RTm+Jck02u6eT1rY8EaVFnFK+8rSaqU8PSaZlk8kZtKRK7agfHiqmv0Z9a76364Za43k\n         YMzSEOMeOcWichMxqTGOZwwsdSL3NVZ3LuOpNtIdCmZgs3UNH/I9gaKZEMWTyGdS16fT\n         24gDSlpwhsCQNYncY4JX+SVsJwn1EOUHKmjfucAo6mrnnd4Ovgc5vVGq2Nl7bmn1lz37\n         GzqJh1OL8M+xl0MRe7Jps+SyB9rGzDzlEUhSLU3hxbZwOk6ckaRG5liM7K88g7lyw7uh\n         IBkw=="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1777595254; c=relaxed/simple;\n\tbh=b4/+eV6bWE2Bwrc2O+/CVJ5INaaI2/6u+mLPhWGNDbE=;\n\th=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:\n\t To:Cc:Content-Type;\n b=cg3PJ5VjddWjQbbfZrt4yQhM1W4+QXMATRuBF5M7Tw2tKk1duYxAVYARTxngyx0s7xAT9P3nTWStjujYvs4ga75O4E/8jE6yPfBEPRowX3s8MkX4uhEjziarN4QVEcp0CyPkvTSO9kiRvu4O1ztql5ZBDmNaDA32IFOzHQIoS5Y=","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=Fg7hYh8JSaCjlzaiWa74d4/q3ZrBr1Vo+JYctYANEaI=;\n        fh=n4uRfhPVfoARc4AbFalqQjQA6h2+DWx3bHMPPDvXhxE=;\n        b=V82T0v+/riJclp1cYVIehwN55kX7WnYhU0XawMpqQhSx3pIcQcL6ugDRcAv0+AWoEd\n         TbxwFCJQKgerw2ihJgCJfCuz1yKNSziaFNCZimU6bEVexV0MdIIWKE8bD96LQYfkWHta\n         5ERDtlSltYVk6MSWqfLaXfLhD4acLivlo5CHNaM03XJOHCuefadaDT7DBeU5dAsVAIuG\n         XIooCXXjWuMUkpTVneaK8QZVRkBUMvhmAJGVckjhGsZeIsWn3Ao2NpuVHSDvEdeqcsF8\n         45UqinUKUXlWE2dM4o3eauM+EWCbmy2wnOH1RHOwJeiB2AQBOQVINz57DPqGEWDy+Ak1\n         dTYA==;\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=Wk5OyGMT; arc=pass smtp.client-ip=209.85.218.53","i=1; mx.google.com; arc=none"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=gmail.com; s=20251104; t=1777595251; x=1778200051;\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=Fg7hYh8JSaCjlzaiWa74d4/q3ZrBr1Vo+JYctYANEaI=;\n        b=Wk5OyGMTXRu2iWdl9Z4ui6uynDKI0AdaIdzk7Z/NaH0O/z1YG3TfwPfBZ9IZ8f29oa\n         x0sJT7J3iySmXt5FmQ4Rx35GWHkVnxt5BqpRTVG7wVIF0WKsrc5Cq8JWjvdyU1V0v1jQ\n         v3AWd2z7eKHA8+o3t8+ncGrgAxSzskBraRkWLjz9ZGinvUoNSmfiBL/uZk1vj38dkOY9\n         mO0BsG5iizQWdQdhDI/JZK3gW16xDkYmMmWZgy4DKFnkLF13stf2EsFvc8XMk+2JLtTP\n         nxlp5llzGBPi3I1+wPz36SrQj16KTwODTHVVDoprnOKAav90Sb13vqcloGpcizab40XI\n         1CKw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=1e100.net; s=20251104; t=1777595251; x=1778200051;\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=Fg7hYh8JSaCjlzaiWa74d4/q3ZrBr1Vo+JYctYANEaI=;\n        b=HoPYjfO/SP2ByTmIgGcto4l5cdpTG0c5ZZCP3WPF3SDNEf+EMP8ktgI7TVXbN6Teqi\n         tJwJhvu0y5oJD1SbUv0s0VCEEwGbLVChxY6JLxf7kSPiRVxrl3XTCakEHmVxmt/MuxHb\n         2aKfRSQ8u8UORo/9Yi2VCwkRWgpsQ8H+h/UxXpLi1Q7tGNDcjeku+432hKklYCUfpZq7\n         ecLsMauanX6g/7hP0QaiTB7R3YGHLNAmDOr0P/Lk/zJuo/malus+XxrITL51UUeA1y1Z\n         MhDjIX1hwxBKDYVP7HvHBomcRI7t7wGoRSagAMj7YnTjqgQkDGZEgVYEJz5BWohQN09a\n         csjA==","X-Gm-Message-State":"AOJu0YzSAEdad8yMgxSnA1PhaEjwgFI+AErvk0YvYB2V7OCeENohqifm\n\tS4C6d9x/Rq+HD612RtWPpBcF6lax/sVeqsmT+PJiY/5RIM1wliOv+RE4vOWmz6a+niGBCEBQ661\n\tAVW/OvLccQEihNM10OpmEO8G5jdIx3+0=","X-Gm-Gg":"AeBDietfNNT0ChiyWoDP3kt2kjVEyOp3lu/cJYS/CJbCi7ypAbxkQsCp3a0/s56UZg+\n\tPtucvaV62cRclm6DVkNKy25ZqJshjB/v1JnZTItjC6C2UTshjKsUsngL23HfkZn6th6BQ2uEQiv\n\tE+kxTkj3uKaPiiyXPrNFlwQo0+DVXA4A4F8t8euddzkbXT9YjBqedwocEwl5R8OcesjSw/nxsqd\n\tnAESmNMFCqMWvXCWKaJS4faympTw3JaAc/g5HUVtlIe5uETjLiKJy8aEaHVzbukxaJNejUFg7nt\n\tZouhGHfA3PHhv6bqyJlwGXnGbqaH+F3vhFUxQeV//JxprwOmIbYpsFYFudfsrwMq15017PX4j+K\n\t0o2+CtJRNcwmXSj81hQ0FdkXVqAtS9wFCcsYqrUq1+gbLZ1edIyDtLHIXx3v7wr9BH9w/","X-Received":"by 2002:a17:907:86a0:b0:b9f:9e7a:bcd2 with SMTP id\n a640c23a62f3a-bbec11f57a4mr40366066b.38.1777595246631; Thu, 30 Apr 2026\n 17:27:26 -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":"<20260430220601.76266-1-rosenp@gmail.com>\n <CAH2r5mvNHedEymrmCYCbghmdv1OLcbVPstnrSZooLXavKkc4Kw@mail.gmail.com>","In-Reply-To":"\n <CAH2r5mvNHedEymrmCYCbghmdv1OLcbVPstnrSZooLXavKkc4Kw@mail.gmail.com>","From":"Rosen Penev <rosenp@gmail.com>","Date":"Thu, 30 Apr 2026 17:27:14 -0700","X-Gm-Features":"AVHnY4L7GIhIQO1Yw8vcFwwt_qs-KfjeEWcdQKkzrVSAxEOOe1que3s099ZabJo","Message-ID":"\n <CAKxU2N_m8+Rd8Q0Ty7sk0_bANdyagy9KTc8GM=hHu=FbwRbaYg@mail.gmail.com>","Subject":"Re: [PATCH] cifssmb: use struct_offset in memcpy calculations","To":"Steve French <smfrench@gmail.com>","Cc":"linux-cifs@vger.kernel.org, Steve French <sfrench@samba.org>,\n\tPaulo Alcantara <pc@manguebit.org>,\n Ronnie Sahlberg <ronniesahlberg@gmail.com>,\n\tShyam Prasad N <sprasad@microsoft.com>, Tom Talpey <tom@talpey.com>,\n\tBharath SM <bharathsm@microsoft.com>,\n\t\"moderated list:COMMON INTERNET FILE SYSTEM CLIENT (CIFS and SMB3)\"\n <samba-technical@lists.samba.org>, open list <linux-kernel@vger.kernel.org>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable"}},{"id":3684996,"web_url":"http://patchwork.ozlabs.org/comment/3684996/","msgid":"<CAKxU2N91aPUvWp20RUdad0P3VTLnX_Sby2RvHJ4Fq1y_4P77YQ@mail.gmail.com>","list_archive_url":null,"date":"2026-05-01T00:47:41","subject":"Re: [PATCH] cifssmb: use struct_offset in memcpy calculations","submitter":{"id":70304,"url":"http://patchwork.ozlabs.org/api/people/70304/","name":"Rosen Penev","email":"rosenp@gmail.com"},"content":"On Thu, Apr 30, 2026 at 3:06 PM Rosen Penev <rosenp@gmail.com> wrote:\n>\n> It seems W=1/FORTIFY_SOURCE is getting confused about the math here.\n>\n> Use struct_offset to point FORTIFY_SOURCE to the correct place.\n>\n> Remove response_data variables and directly apply to memcpy. Simpler\n> and avoids excess casting.\n>\n> Signed-off-by: Rosen Penev <rosenp@gmail.com>\n> ---\n>  fs/smb/client/cifssmb.c | 40 +++++++++++++---------------------------\n>  1 file changed, 13 insertions(+), 27 deletions(-)\n>\n> diff --git a/fs/smb/client/cifssmb.c b/fs/smb/client/cifssmb.c\n> index 3990a9012264..8598cec5ebbd 100644\n> --- a/fs/smb/client/cifssmb.c\n> +++ b/fs/smb/client/cifssmb.c\n> @@ -4090,9 +4090,9 @@ CIFSSMBQFileInfo(const unsigned int xid, struct cifs_tcon *tcon,\n>                                       get_bcc(&pSMBr->hdr), 40);\n>                 else if (pFindData) {\n>                         __u16 data_offset = le16_to_cpu(pSMBr->t2.DataOffset);\n> -                       memcpy((char *) pFindData,\n> -                              (char *) &pSMBr->hdr.Protocol +\n> -                              data_offset, sizeof(FILE_ALL_INFO));\n> +                       memcpy(pFindData,\n> +                              (char *)pSMBr + struct_offset(pSMBr, hdr.Protocol) + data_offset,\n> +                              sizeof(FILE_ALL_INFO));\n>                 } else\n>                     rc = -ENOMEM;\n>         }\n> @@ -4264,9 +4264,8 @@ CIFSSMBUnixQFileInfo(const unsigned int xid, struct cifs_tcon *tcon,\n>                                       get_bcc(&pSMBr->hdr), sizeof(FILE_UNIX_BASIC_INFO));\n>                 } else {\n>                         __u16 data_offset = le16_to_cpu(pSMBr->t2.DataOffset);\n> -                       memcpy((char *) pFindData,\n> -                              (char *) &pSMBr->hdr.Protocol +\n> -                              data_offset,\n> +                       memcpy(pFindData,\n> +                              (char *)pSMBr + struct_offset(pSMBr, hdr.Protocol) + data_offset,\nOn further review, struct_offset might not be needed.\n\nI believe\n\nstruct_offset(pSMBr, hdr.Protocol) == 0\n\nsince Protocol is the first member of hdr and hdr is the first member of pSMBr.\n\nNot sure if removal is desired.\n>                                sizeof(FILE_UNIX_BASIC_INFO));\n>                 }\n>         }\n> @@ -4349,9 +4348,8 @@ CIFSSMBUnixQPathInfo(const unsigned int xid, struct cifs_tcon *tcon,\n>                                       get_bcc(&pSMBr->hdr), sizeof(FILE_UNIX_BASIC_INFO));\n>                 } else {\n>                         __u16 data_offset = le16_to_cpu(pSMBr->t2.DataOffset);\n> -                       memcpy((char *) pFindData,\n> -                              (char *) &pSMBr->hdr.Protocol +\n> -                              data_offset,\n> +                       memcpy(pFindData,\n> +                              (char *)pSMBr + struct_offset(pSMBr, hdr.Protocol) + data_offset,\n>                                sizeof(FILE_UNIX_BASIC_INFO));\n>                 }\n>         }\n> @@ -5079,7 +5077,6 @@ CIFSSMBQFSAttributeInfo(const unsigned int xid, struct cifs_tcon *tcon)\n>  /* level 0x105  SMB_QUERY_FILE_SYSTEM_INFO */\n>         TRANSACTION2_QFSI_REQ *pSMB = NULL;\n>         TRANSACTION2_QFSI_RSP *pSMBr = NULL;\n> -       FILE_SYSTEM_ATTRIBUTE_INFO *response_data;\n>         unsigned int in_len;\n>         int rc = 0;\n>         int bytes_returned = 0;\n> @@ -5130,11 +5127,8 @@ CIFSSMBQFSAttributeInfo(const unsigned int xid, struct cifs_tcon *tcon)\n>                                       get_bcc(&pSMBr->hdr), 13);\n>                 } else {\n>                         __u16 data_offset = le16_to_cpu(pSMBr->t2.DataOffset);\n> -                       response_data =\n> -                           (FILE_SYSTEM_ATTRIBUTE_INFO\n> -                            *) (((char *) &pSMBr->hdr.Protocol) +\n> -                                data_offset);\n> -                       memcpy(&tcon->fsAttrInfo, response_data,\n> +                       memcpy(&tcon->fsAttrInfo,\n> +                              (char *)pSMBr + struct_offset(pSMBr, hdr.Protocol) + data_offset,\n>                                sizeof(FILE_SYSTEM_ATTRIBUTE_INFO));\n>                 }\n>         }\n> @@ -5152,7 +5146,6 @@ CIFSSMBQFSDeviceInfo(const unsigned int xid, struct cifs_tcon *tcon)\n>  /* level 0x104 SMB_QUERY_FILE_SYSTEM_INFO */\n>         TRANSACTION2_QFSI_REQ *pSMB = NULL;\n>         TRANSACTION2_QFSI_RSP *pSMBr = NULL;\n> -       FILE_SYSTEM_DEVICE_INFO *response_data;\n>         unsigned int in_len;\n>         int rc = 0;\n>         int bytes_returned = 0;\n> @@ -5205,11 +5198,8 @@ CIFSSMBQFSDeviceInfo(const unsigned int xid, struct cifs_tcon *tcon)\n>                                       sizeof(FILE_SYSTEM_DEVICE_INFO));\n>                 else {\n>                         __u16 data_offset = le16_to_cpu(pSMBr->t2.DataOffset);\n> -                       response_data =\n> -                           (FILE_SYSTEM_DEVICE_INFO *)\n> -                               (((char *) &pSMBr->hdr.Protocol) +\n> -                                data_offset);\n> -                       memcpy(&tcon->fsDevInfo, response_data,\n> +                       memcpy(&tcon->fsDevInfo,\n> +                              (char *)pSMBr + struct_offset(pSMBr, hdr.Protocol) + data_offset,\n>                                sizeof(FILE_SYSTEM_DEVICE_INFO));\n>                 }\n>         }\n> @@ -5227,7 +5217,6 @@ CIFSSMBQFSUnixInfo(const unsigned int xid, struct cifs_tcon *tcon)\n>  /* level 0x200  SMB_QUERY_CIFS_UNIX_INFO */\n>         TRANSACTION2_QFSI_REQ *pSMB = NULL;\n>         TRANSACTION2_QFSI_RSP *pSMBr = NULL;\n> -       FILE_SYSTEM_UNIX_INFO *response_data;\n>         unsigned int in_len;\n>         int rc = 0;\n>         int bytes_returned = 0;\n> @@ -5277,11 +5266,8 @@ CIFSSMBQFSUnixInfo(const unsigned int xid, struct cifs_tcon *tcon)\n>                                       get_bcc(&pSMBr->hdr), 13);\n>                 } else {\n>                         __u16 data_offset = le16_to_cpu(pSMBr->t2.DataOffset);\n> -                       response_data =\n> -                           (FILE_SYSTEM_UNIX_INFO\n> -                            *) (((char *) &pSMBr->hdr.Protocol) +\n> -                                data_offset);\n> -                       memcpy(&tcon->fsUnixInfo, response_data,\n> +                       memcpy(&tcon->fsUnixInfo,\n> +                              (char *)pSMBr + struct_offset(pSMBr, hdr.Protocol) + data_offset,\n>                                sizeof(FILE_SYSTEM_UNIX_INFO));\n>                 }\n>         }\n> --\n> 2.54.0\n>","headers":{"Return-Path":"\n <linux-cifs+bounces-11320-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=IynExUOV;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c15:e001:75::12fc:5321; helo=sin.lore.kernel.org;\n envelope-from=linux-cifs+bounces-11320-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=\"IynExUOV\"","smtp.subspace.kernel.org;\n arc=pass smtp.client-ip=209.85.218.43","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 sin.lore.kernel.org (sin.lore.kernel.org\n [IPv6:2600:3c15:e001:75::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g6C7j4V99z1yHZ\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 01 May 2026 10:48:01 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sin.lore.kernel.org (Postfix) with ESMTP id 032583008D00\n\tfor <incoming@patchwork.ozlabs.org>; Fri,  1 May 2026 00:47:59 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 3FE8F23D7F4;\n\tFri,  1 May 2026 00:47:56 +0000 (UTC)","from mail-ej1-f43.google.com (mail-ej1-f43.google.com\n [209.85.218.43])\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 BB52B189F43\n\tfor <linux-cifs@vger.kernel.org>; Fri,  1 May 2026 00:47:54 +0000 (UTC)","by mail-ej1-f43.google.com with SMTP id\n a640c23a62f3a-ba67b332bbaso227945666b.0\n        for <linux-cifs@vger.kernel.org>;\n Thu, 30 Apr 2026 17:47:54 -0700 (PDT)"],"ARC-Seal":["i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1777596476; cv=pass;\n b=PaSvpO1dUgOR5/np2m1gyY+D5sfd64Ps0/enJ7ejmO+QSh63xWGf9WY0Ju2cFx/Zobn9yMU26EXCtW4PNHDqI4COHXi5aUFVJNOu3xZGRWrkEm6foE6N0efc5DpfKd5FvBkb6xMvo5xeR/VDgr0ufeueQNNnHZR+pX3EsWPvGFU=","i=1; a=rsa-sha256; t=1777596473; cv=none;\n        d=google.com; s=arc-20240605;\n        b=ZFj+R439zoIiJmQAmoKhBOIMbY1VouiRXW+F7xpu0FtD92UDCNvtoTNgR4OoDFgjiM\n         paZ1F3zOschG7MGEDCXA3a12BoLgSZusf9k0CW2EQdfbUoEh83sHfzEpfXXy4ezCW5mp\n         Bvi/NH+Nxra9iZ7PJysrnRfyUSXIbGdpeO/ikdqCgbERhbHyP5akzJmN0+cqlTezX97o\n         /H4xfAeEU9k3MKCidgE5cDTz/SEmPb8NufPdDVenaXvkb4n/24i6mR6seUgOpN6bhsqx\n         UBq3lDp3TcsweAzp+QSmaZ73MyrHgWQYbwhiHy0tQivUgl+W8XIolfVAIPTyi+JyxH6F\n         2Zuw=="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1777596476; c=relaxed/simple;\n\tbh=1dWIZJHlZdtZyn8FhsP1PzWEjeD9W5TWYymkhsSY1H4=;\n\th=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:\n\t To:Cc:Content-Type;\n b=apE72pcbUnGfLxjYr3dBvDa2pOuPbgiLlGVZJidzecXhlcMU8sw6dh3CtOn3KHm4sQlEwCeCZ2ZxeJZiIUyuBiAgsECF5qS1YdJHmCtrepa20CHU4HGVal/PuS1SlAdO7iN7xS8s3SnE4H3M/hJj1CvKPiCZ5ifCzJZd9lByCVw=","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=gA5MU8H/VP+EpMiZU/F1urYiAlH9oeYefDlgYKqvLm0=;\n        fh=v1++Ia+fP5Cgt4iH6/T3wvsl5IZTsVbAm6oNSl5bGX0=;\n        b=H1oZ9cYw1Qkm77clk2c/mUEEcxkPIzkmcM5LHVvzPAB2YEfAmwRtazea2RUCS8DyId\n         /WKqsV6wK00lgLB5dVj4azLFMUtaCekFJGU25owtnpgmoiq78eOUlTeck7fM3tdb27bg\n         RCj48Y7+REIdtEpdTn9AVEJvDKGSX73rkvKIkAO2bcjbEEUIBDjSOIldIXOrBGWv4Q8Q\n         yio2Dq9o+5XdBnqJY67X7aD6Ks7geFZ/V+oi2gUjIld4gr+WX+hqIrG68P8bPX6GvtWm\n         ci2J3OPDCKpGTgYmFx0UC+M/wTdJ92S+avD4h53hb6dI2LIKh8g2s+onVyduUXdDBXV4\n         IjsA==;\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=IynExUOV; arc=pass smtp.client-ip=209.85.218.43","i=1; mx.google.com; arc=none"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=gmail.com; s=20251104; t=1777596473; x=1778201273;\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=gA5MU8H/VP+EpMiZU/F1urYiAlH9oeYefDlgYKqvLm0=;\n        b=IynExUOVHgJrvzfElvJ42+PfA1Mq74d8cC1wQwaFVnkR8WohSq4O6m2wGBncr55hap\n         OxFeK1YaRiE12TfB34Q7O43yTNnK0rTMlfOsYWEteuYWvJFYho+uI50/eIkBFjAxPtAd\n         po0h2+JCj+yZTZsDQisLhNg4/nKsHD4Pb2ZAWhKd9wJ4Q9wIiJpUmpVL8R1yhx6Ks9/+\n         5Jp7mohtJIRIpntbuN2L1fqpO9qTwfnyvz4cjSxm4xOY0+mawhLoAbuYeifyjO/ke/08\n         Xobb+OGzyelOtfeQ5/SQquMhNsEH2IYVHK9heJqBAJqcMt4n/flmkXBTxD5cdSnhiHtD\n         67ew==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=1e100.net; s=20251104; t=1777596473; x=1778201273;\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=gA5MU8H/VP+EpMiZU/F1urYiAlH9oeYefDlgYKqvLm0=;\n        b=OTRl6gW92z8Ffg1Ijlc0j5umluisZjq7ridjibwrkt7svopXsDcvvRLNYYjiCofDs0\n         0rVXIK0JptwnkgnTJlWXDqFpcYH0BCGQJbvgdMkKCq6quloydBYYHbDsTrribjrO22o7\n         yEwj7QgZLKmrrgEAwgLNXo8/9PFHnf8fJXI16Re0JSTpIa69tch+s95JWE4unGeyrU9f\n         2E6gUsyVK863RzIB0U+aATzjOIgC74L7fANE7dnp37d/WOr60v92HSfBjEDxGvGjoHFx\n         80UNoujQtooQDMDI26ZB0IoEsLBiRkAQgXG7EHHxYVVtu5RwXyQBdOHY2rucfsbBQ3Bt\n         7EDw==","X-Gm-Message-State":"AOJu0Yyt1SEQCHlMyCIUW/qxkB//47ALGFhsrVcjq9y9cOhiZG0/mqGB\n\twBuXC7RwaLcx4aF+WUWOC2razP1wItg38zqcs/j5mFL6U24TbRrTmdxjBMwae9T2jgK/1dkCO8V\n\t28HVriJwy9GxKK4eN2cI6q4As90Idl++TAvXwGa0=","X-Gm-Gg":"AeBDieuqNpOVFMThVzTuc12YB2AJDBHJzpE7YFKAFpMPURUsbq+FZ/YMCNBsCbPImio\n\tzdYul5j+5J3f289gRSIbEoi3d1Pk5BBP4TdCJBqUUbSRdmtX1iWvwx5d5Ah1HSlzZPkawP4T+AE\n\tw+g1M90Q9FnSefGjo1LmPHCibkt3qDPnWXg/QCiYBkZ5ndC0te9TyCet8e5kcV+kt/C53SxQeH6\n\tyvvITlAqlD3M7g0INfmTOQ+b28U5xTf5CmkJsKdIz6tcZ1H6YRh2QhptGS1z7n3SeLKytwgcjga\n\t8BV+Z8zLNzG6SeWmgBE7FqEDUoWNE+G784m8rfYukrRKIDAgFL3QYJk0J0em1dhB8Lht82ZQOFW\n\t25VKAw81f8bd3Wsh8LdywWJHJj4Z/mEQfiqmqbgZPUToGh3xnd2oNZQpfNC2Eu0jtgDyT","X-Received":"by 2002:a17:907:6d11:b0:b9d:4301:be37 with SMTP id\n a640c23a62f3a-bbac5abfa9emr340991966b.5.1777596472435; Thu, 30 Apr 2026\n 17:47:52 -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":"<20260430220601.76266-1-rosenp@gmail.com>","In-Reply-To":"<20260430220601.76266-1-rosenp@gmail.com>","From":"Rosen Penev <rosenp@gmail.com>","Date":"Thu, 30 Apr 2026 17:47:41 -0700","X-Gm-Features":"AVHnY4I2reyX5j1UdJFbNiB8-56Esqx6Xgl89-hTzZbod2ktSGTZB1nv_bGU_Ow","Message-ID":"\n <CAKxU2N91aPUvWp20RUdad0P3VTLnX_Sby2RvHJ4Fq1y_4P77YQ@mail.gmail.com>","Subject":"Re: [PATCH] cifssmb: use struct_offset in memcpy calculations","To":"linux-cifs@vger.kernel.org","Cc":"Steve French <sfrench@samba.org>, Paulo Alcantara <pc@manguebit.org>,\n\tRonnie Sahlberg <ronniesahlberg@gmail.com>,\n Shyam Prasad N <sprasad@microsoft.com>,\n\tTom Talpey <tom@talpey.com>, Bharath SM <bharathsm@microsoft.com>,\n\t\"moderated list:COMMON INTERNET FILE SYSTEM CLIENT (CIFS and SMB3)\"\n <samba-technical@lists.samba.org>, open list <linux-kernel@vger.kernel.org>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable"}}]