All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@kernel.org>
To: Denys Vlasenko <vda.linux@googlemail.com>
Cc: Denys Vlasenko <dvlasenk@redhat.com>,
	Andy Lutomirski <luto@amacapital.net>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Steven Rostedt <rostedt@goodmis.org>,
	Borislav Petkov <bp@alien8.de>, "H. Peter Anvin" <hpa@zytor.com>,
	Oleg Nesterov <oleg@redhat.com>,
	Frederic Weisbecker <fweisbec@gmail.com>,
	Alexei Starovoitov <ast@plumgrid.com>,
	Will Drewry <wad@chromium.org>, Kees Cook <keescook@chromium.org>,
	X86 ML <x86@kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 1/2] move offsetofend() from vfio.h to stddef.h
Date: Mon, 9 Mar 2015 16:28:22 +0100	[thread overview]
Message-ID: <20150309152822.GA21219@gmail.com> (raw)
In-Reply-To: <CAK1hOcN2zvZGhPxRRcoQCv=i-kEOhN2o_gofaRAj+hnFE8uLqg@mail.gmail.com>


* Denys Vlasenko <vda.linux@googlemail.com> wrote:

> On Mon, Mar 9, 2015 at 3:58 PM, Ingo Molnar <mingo@kernel.org> wrote:
> >> -/**
> >> - * offsetofend(TYPE, MEMBER)
> >> - *
> >> - * @TYPE: The type of the structure
> >> - * @MEMBER: The member within the structure to get the end offset of
> >> - *
> >> - * Simple helper macro for dealing with variable sized structures passed
> >> - * from user space.  This allows us to easily determine if the provided
> >> - * structure is sized to include various fields.
> >> - */
> >> -#define offsetofend(TYPE, MEMBER) \
> >> -     (offsetof(TYPE, MEMBER) + sizeof(((TYPE *)0)->MEMBER))
> >
> > So I like it, and because it is not particularly trivial when to use
> > this primitive it was explained nicely in a description in the vfio.h
> > version.
> >
> > But you lost that nice description during the code move!!
> 
> That description was clearly specific to how that macro is used in
> drivers/vfio/*.c, along the lines of
> 
>                 minsz = offsetofend(struct vfio_eeh_pe_op, op);

Hm, but here 'minsz' == sizeof(struct vfio_eeh_pe_op), so the vfio 
usage does not seem to be justified.

>                 if (copy_from_user(&op, (void __user *)arg, minsz))
>                         return -EFAULT;
>                 if (op.argsz < minsz || op.flags)
>                         return -EINVAL;
> 
> But the macro is generic, it has many other uses besides this one.

So I might be missing something, but what generic uses does it have, 
beyond structures that have some rare size related weirdness, such as 
alignment attributes? In 99% of the cases:

   sizeof(struct) == offsetofend(struct, last_member)

right?

> Nevertheless, I can resend a version where comment survives if you 
> want...

So maybe extend it to a description that you think describes its uses 
correctly? People will keep wondering about when to use this.

Thanks,

	Ingo

  reply	other threads:[~2015-03-09 15:28 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-09 14:52 [PATCH 1/2] move offsetofend() from vfio.h to stddef.h Denys Vlasenko
2015-03-09 14:52 ` [PATCH 2/2 v2] x86: make 32-bit "emergency stack" better documented Denys Vlasenko
2015-03-09 15:16   ` Andy Lutomirski
2015-03-14 16:00   ` Pavel Machek
2015-03-14 17:24     ` Brian Gerst
2015-03-16 12:10   ` [tip:x86/asm] x86/asm/entry/32: Document the 32-bit SYSENTER " emergency stack" better tip-bot for Denys Vlasenko
2015-03-17  8:46   ` tip-bot for Denys Vlasenko
2015-03-09 14:58 ` [PATCH 1/2] move offsetofend() from vfio.h to stddef.h Ingo Molnar
2015-03-09 15:15   ` Denys Vlasenko
2015-03-09 15:28     ` Ingo Molnar [this message]
2015-03-09 15:30       ` Andy Lutomirski
2015-03-09 15:45         ` Ingo Molnar
2015-03-09 15:44       ` Alex Williamson
2015-03-09 16:16 ` Linus Torvalds
2015-03-16 12:10 ` [tip:x86/asm] include/stddef.h: Move offsetofend() from vfio.h to a generic kernel header tip-bot for Denys Vlasenko
2015-03-17  8:46 ` tip-bot for Denys Vlasenko

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=20150309152822.GA21219@gmail.com \
    --to=mingo@kernel.org \
    --cc=ast@plumgrid.com \
    --cc=bp@alien8.de \
    --cc=dvlasenk@redhat.com \
    --cc=fweisbec@gmail.com \
    --cc=hpa@zytor.com \
    --cc=keescook@chromium.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@amacapital.net \
    --cc=oleg@redhat.com \
    --cc=rostedt@goodmis.org \
    --cc=torvalds@linux-foundation.org \
    --cc=vda.linux@googlemail.com \
    --cc=wad@chromium.org \
    --cc=x86@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.