From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932521AbbCIPQT (ORCPT ); Mon, 9 Mar 2015 11:16:19 -0400 Received: from mail-qc0-f179.google.com ([209.85.216.179]:44980 "EHLO mail-qc0-f179.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932484AbbCIPQS (ORCPT ); Mon, 9 Mar 2015 11:16:18 -0400 MIME-Version: 1.0 In-Reply-To: <20150309145844.GA19511@gmail.com> References: <1425912738-559-1-git-send-email-dvlasenk@redhat.com> <20150309145844.GA19511@gmail.com> From: Denys Vlasenko Date: Mon, 9 Mar 2015 16:15:57 +0100 Message-ID: Subject: Re: [PATCH 1/2] move offsetofend() from vfio.h to stddef.h To: Ingo Molnar Cc: Denys Vlasenko , Andy Lutomirski , Linus Torvalds , Steven Rostedt , Borislav Petkov , "H. Peter Anvin" , Oleg Nesterov , Frederic Weisbecker , Alexei Starovoitov , Will Drewry , Kees Cook , X86 ML , Linux Kernel Mailing List Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Mar 9, 2015 at 3:58 PM, Ingo Molnar 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); 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. Nevertheless, I can resend a version where comment survives if you want...