Thread (7 messages) 7 messages, 3 authors, 2015-10-30

Re: [PATCH] can: Use correct type in sizeof() in nla_put()

From: Marek Vasut <marex@denx.de>
Date: 2015-10-30 15:33:21
Also in: linux-can

On Friday, October 30, 2015 at 03:53:31 PM, Oliver Hartkopp wrote:
On 10/30/2015 03:24 PM, Marek Vasut wrote:
quoted
On Friday, October 30, 2015 at 03:17:44 PM, Marc Kleine-Budde wrote:
quoted
On 10/30/2015 03:01 PM, Marek Vasut wrote:
quoted
Are you absolutelly positive this doesn't break kernel ABI please ?

I am a little worried there, since the size of can_clock and
can_ctrlmode structures differ.
struct can_clock is a u32, see [1]
struct can_ctrlmode is 2 x u32.

in libsocketcan[2] it's accessed like this:
quoted
	memcpy(res,
	
		RTA_DATA(can_attr[IFLA_CAN_CLOCK]),
		sizeof(struct can_clock));
I think it should be ok.
In that case, yes, it's good. Hopefully, noone wrote his own thing.
Fortunately ip from iproute2 does it similary:

https://git.kernel.org/cgit/linux/kernel/git/shemminger/iproute2.git/tree/i
p/iplink_can.c#n338


	if (tb[IFLA_CAN_CLOCK]) {
		struct can_clock *clock = RTA_DATA(tb[IFLA_CAN_CLOCK]);

		fprintf(f, "\n	  clock %d", clock->freq);
	}

As the clock is a read-only value kernel->userspace and nla_put creates its
own small ID/length information each time we are REALLY LUCKY that this fix
doesn't break the ABI in this case.

When can_clock would have been greater then can_ctrlmode we really had a
problem ...

Thanks for caching this!
Yeah, I already had one leg in my asbestos trousers all right. Thanks for
double-checking this!

Best regards,
Marek Vasut
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help