> D. Wythe wrote: > > > >> On 8/14/24 11:58 AM, Jeongjun Park wrote: >> Because clcsk_*, like clcsock, is initialized during the smc init process, >> the code was moved to prevent clcsk_* from having an address like >> inet_sk(sk)->pinet6, thereby preventing the previously initialized values >> from being tampered with. > > I don't agree with your approach, but I finally got the problem you described. In fact, the issue here is that smc_sock should also be an inet_sock, whereas currently it's just a sock. Therefore, the best solution would be to embed an inet_sock within smc_sock rather than performing this movement as you suggested. > > struct smc_sock { /* smc sock container */ > union { > struct sock sk; > struct inet_sock inet; > }; > > ... > > Thanks. > D. Wythe > Wow, I didn't know this could be done this way. I'll test it with that code and get back to you Regards, Jeongjun Park > >> >> Additionally, if you don't need alignment in smc_inet6_prot , I'll modify >> the patch to only add the necessary code without alignment. >> >> Regards, >> Jeongjun Park > > >>> >>>> Also, regarding alignment, it's okay for me whether it's aligned or >>>> not,But I checked the styles of other types of >>>> structures and did not strictly require alignment, so I now feel that >>>> there is no need to >>>> modify so much to do alignment. >>>> >>>> D. Wythe >>> >>> >>>>>>> + >>>>>>> static struct proto smc_inet6_prot = { >>>>>>> - .name = "INET6_SMC", >>>>>>> - .owner = THIS_MODULE, >>>>>>> - .init = smc_inet_init_sock, >>>>>>> - .hash = smc_hash_sk, >>>>>>> - .unhash = smc_unhash_sk, >>>>>>> - .release_cb = smc_release_cb, >>>>>>> - .obj_size = sizeof(struct smc_sock), >>>>>>> - .h.smc_hash = &smc_v6_hashinfo, >>>>>>> - .slab_flags = SLAB_TYPESAFE_BY_RCU, >>>>>>> + .name = "INET6_SMC", >>>>>>> + .owner = THIS_MODULE, >>>>>>> + .init = smc_inet_init_sock, >>>>>>> + .hash = smc_hash_sk, >>>>>>> + .unhash = smc_unhash_sk, >>>>>>> + .release_cb = smc_release_cb, >>>>>>> + .obj_size = sizeof(struct smc6_sock), >>>>>>> + .h.smc_hash = &smc_v6_hashinfo, >>>>>>> + .slab_flags = SLAB_TYPESAFE_BY_RCU, >>>>>>> + .ipv6_pinfo_offset = offsetof(struct smc6_sock, >>>>>>> np), >>>>>>> }; >>>>>>> >>>>>>> static const struct proto_ops smc_inet6_stream_ops = { >>>>>>> -- >