On 10/30/2015 03:24 PM, Marek Vasut wrote: > On Friday, October 30, 2015 at 03:17:44 PM, Marc Kleine-Budde wrote: >> On 10/30/2015 03:01 PM, Marek Vasut wrote:
>>> 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: >>> 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/ip/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! Oliver -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html