Re: Breaking UAPI change?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Kurt,

----- Ursprüngliche Mail -----
>> commit f5223e9eee65 ("can: extend sockaddr_can to include j1939 members")
>> increased the size of
>> struct sockaddr_can.
>> This is a problem for applications which use recvfrom() with addrlen being
>> sizeof(struct sockaddr_can)
>> or sizeof(struct sockaddr).
>> If such an application was built before the change it will no longer function
>> correctly on newer kernels.
> 
> This scenario was identified, and explicitely dealt with.
> This requires a tiny bit different code, i.e. net/can/raw.c should use
> REQUIRED_SIZE() instead of sizeof() for testing the size of the address
> structure.
> 
>> In fact I ran into such a scenario and found the said commit later that day.
> 
> Looking to the v5.10 kernel (which I happen to have checked out),
> your claim indeed seems true, the raw_recvmsg does not (raw_bind and
> raw_sendmsg work correct, but that's not important for your problem).
> 
>> 
>> Is this a known issue?
> 
> It wasn't, until you found it :-)

Thanks for the prompt reply!
 
>> Or is this allowed and application must not use sizeof(struct sockaddr_can) as
>> addrlen?
> 
> sizeof(struct sockaddr_can). As you already mentioned, applications may have
> been built
> before the size increase, and so they should not be recompiled.
> 
> 
>> If so, what is the proposed way to avoid future breakage?
> 
> Your application should not change. Kernel must be fixed.

Feel free to CC me when you submit a patch, I'll happily test it.

Thanks,
//richard



[Index of Archives]     [Automotive Discussions]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]     [CAN Bus]

  Powered by Linux