From: "Darrick J. Wong" <darrick.wong@oracle.com>
To: Allison Henderson <allison.henderson@oracle.com>
Cc: linux-xfs@vger.kernel.org
Subject: Re: [PATCH 19/21] xfsprogs: Remove single byte array from struct parent
Date: Tue, 8 May 2018 10:32:52 -0700 [thread overview]
Message-ID: <20180508173252.GS11261@magnolia> (raw)
In-Reply-To: <1525754479-12177-20-git-send-email-allison.henderson@oracle.com>
On Mon, May 07, 2018 at 09:41:17PM -0700, Allison Henderson wrote:
> Variable sized arrays implemented this way may cause
> corruptions depending on how different compilers pack
> the structure.
>
> Signed-off-by: Allison Henderson <allison.henderson@oracle.com>
> ---
> include/parent.h | 1 -
> io/parent.c | 9 ++++++---
> 2 files changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/include/parent.h b/include/parent.h
> index f338f96..85cef85 100644
> --- a/include/parent.h
> +++ b/include/parent.h
> @@ -22,7 +22,6 @@ typedef struct parent {
> __u64 p_ino;
> __u32 p_gen;
> __u16 p_reclen;
> - char p_name[1];
> } parent_t;
Two options here: Either we finally fix up this part of libhandle to
talk to the kernel ioctls (whether or not we use the new apis in the
'upper half' patch at the end of this series to provide that emulation)
or just deprecate and kill all this old parent pointer stuff since it
has never worked on Linux.
FWIW struct parent is an in-core structure exposed via libhandle so (a)
we can't change it and (b) the padding problems don't exist.
--D
>
> typedef struct parent_cursor {
> diff --git a/io/parent.c b/io/parent.c
> index 1968516..55b8b49 100644
> --- a/io/parent.c
> +++ b/io/parent.c
> @@ -45,7 +45,8 @@ check_parent_entry(xfs_bstat_t *bstatp, parent_t *parent)
> struct stat statbuf;
> char *str;
>
> - sprintf(fullpath, _("%s%s"), mntpt, parent->p_name);
> + snprintf(fullpath, parent->p_reclen, _("%s%s"), mntpt,
> + ((char*)parent)+sizeof(struct parent));
>
> sts = lstat(fullpath, &statbuf);
> if (sts != 0) {
> @@ -284,9 +285,11 @@ print_parent_entry(parent_t *parent, int fullpath)
> printf(_("p_gen = %u\n"), parent->p_gen);
> printf(_("p_reclen = %u\n"), parent->p_reclen);
> if (fullpath)
> - printf(_("p_name = \"%s%s\"\n"), mntpt, parent->p_name);
> + printf(_("p_name = \"%s%s\"\n"), mntpt,
> + ((char*)parent)+sizeof(struct parent));
> else
> - printf(_("p_name = \"%s\"\n"), parent->p_name);
> + printf(_("p_name = \"%s\"\n"),
> + ((char*)parent)+sizeof(struct parent));
> }
>
> static int
> --
> 2.7.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2018-05-08 17:32 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-08 4:40 [PATCH 00/21] xfsprogs: parent pointers v1 Allison Henderson
2018-05-08 4:40 ` [PATCH 01/21] xfsprogs: Move xfs_attr.h to libxfs Allison Henderson
2018-05-08 17:18 ` Darrick J. Wong
2018-05-08 4:41 ` [PATCH 02/21] xfsprogs: Add trans toggle to attr routines Allison Henderson
2018-05-08 4:41 ` [PATCH 03/21] xfsprogs: Add attibute set and helper functions Allison Henderson
2018-05-08 4:41 ` [PATCH 04/21] xfsprogs: Add attibute remove " Allison Henderson
2018-05-08 4:41 ` [PATCH 05/21] xfsprogs: Set up infastructure for deferred attribute operations Allison Henderson
2018-05-08 4:41 ` [PATCH 06/21] xfsprogs: Add xfs_attr_set_deferred and xfs_attr_remove_deferred Allison Henderson
2018-05-08 4:41 ` [PATCH 07/21] xfsprogs: Remove all strlen calls in all xfs_attr_* functions for attr names Allison Henderson
2018-05-08 4:41 ` [PATCH 08/21] xfsprogs: get directory offset when adding directory name Allison Henderson
2018-05-08 4:41 ` [PATCH 09/21] xfsprogs: get directory offset when removing " Allison Henderson
2018-05-08 4:41 ` [PATCH 10/21] xfsprogs: get directory offset when replacing a " Allison Henderson
2018-05-08 4:41 ` [PATCH 11/21] xfsprogs: add parent pointer support to attribute code Allison Henderson
2018-05-08 4:41 ` [PATCH 12/21] xfsprogs: define parent pointer xattr format Allison Henderson
2018-05-08 4:41 ` [PATCH 13/21] xfsprogs: extent transaction reservations for parent attributes Allison Henderson
2018-05-08 4:41 ` [PATCH 14/21] xfsprogs: parent pointer attribute creation Allison Henderson
2018-05-08 4:41 ` [PATCH 15/21] xfsprogs: Add the parent pointer support to the superblock version 5 Allison Henderson
2018-05-08 4:41 ` [PATCH 16/21] xfsprogs: Add parent pointer ioctl Allison Henderson
2018-05-08 4:41 ` [PATCH 17/21] xfsprogs: Add delayed attributes error tag Allison Henderson
2018-05-08 17:21 ` Darrick J. Wong
2018-05-08 20:17 ` Eric Sandeen
2018-05-08 4:41 ` [PATCH 18/21] xfsprogs: Add parent pointer flag to cmd Allison Henderson
2018-05-08 17:25 ` Darrick J. Wong
2018-05-08 19:02 ` Allison Henderson
2018-05-08 22:44 ` Darrick J. Wong
2018-05-08 4:41 ` [PATCH 19/21] xfsprogs: Remove single byte array from struct parent Allison Henderson
2018-05-08 17:32 ` Darrick J. Wong [this message]
2018-05-08 4:41 ` [PATCH 20/21] xfsprogs: Add parent pointers during protofile creation Allison Henderson
2018-05-08 17:43 ` Darrick J. Wong
2018-05-08 19:28 ` Allison Henderson
2018-05-08 20:39 ` Eric Sandeen
2018-05-08 21:14 ` Allison Henderson
2018-05-08 21:17 ` Eric Sandeen
2018-05-08 21:57 ` Allison Henderson
2018-05-08 22:27 ` Eric Sandeen
2018-05-08 4:41 ` [PATCH 21/21] xfsprogs: implement the upper half of parent pointers Allison Henderson
2018-05-08 17:45 ` Darrick J. Wong
2018-05-09 1:39 ` Allison Henderson
2018-05-09 1:44 ` Darrick J. Wong
2018-05-09 1:47 ` Allison Henderson
2018-05-08 20:52 ` Eric Sandeen
2018-05-08 23:04 ` Darrick J. Wong
2018-05-08 23:13 ` Allison Henderson
2018-05-09 1:22 ` Darrick J. Wong
2018-05-09 1:32 ` Allison Henderson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180508173252.GS11261@magnolia \
--to=darrick.wong@oracle.com \
--cc=allison.henderson@oracle.com \
--cc=linux-xfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox