[prev in list] [next in list] [prev in thread] [next in thread]
List: linux-keyrings
Subject: RE: [PATCH 02/32] Introduce flexible array struct memcpy() helpers
From: David Laight <David.Laight () ACULAB ! COM>
Date: 2022-05-06 11:15:23
Message-ID: 46ec2f1d6e9347eaba1feeb00e8c508a () AcuMS ! aculab ! com
[Download RAW message or body]
From: Johannes Berg
> Sent: 05 May 2022 21:13
> On Thu, 2022-05-05 at 13:08 -0700, Keith Packard wrote:
>
>
> > I bet you've already considered the simpler form:
> >
> > struct something *instance = mem_to_flex_dup(byte_array, count, GFP_KERNEL);
> > if (IS_ERR(instance))
> > return PTR_ERR(instance);
> >
>
> Sadly, this doesn't work in any way because mem_to_flex_dup() needs to
> know at least the type, hence passing 'instance', which is simpler than
> passing 'struct something'.
You can use:
struct something *instance;
mem_to_flex_dup(instance, byte_array, count, GFP_KERNEL);
if (IS_ERR(instance))
return PTR_ERR(instance);
and have mem_to_flex_dup() (which must be a #define) update 'instance'.
(You can require &instance - and just precede all the uses with
an extra '*' to make it more obvious the variable is updated.
But there is little point requiring it be NULL.)
If you really want to define the variable mid-block you can use:
mem_to_flex_dup(struct something *, instance, byte_array, count, GFP_KERNEL);
but I really hate having declarations anywhere other than the top of
a function because it makes them hard for the 'mk1 eyeball' to spot.
David
-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic