Linux kernel 64位内核和32位用户空间之间的指针转换
我有一个32位用户空间软件和一个64位内核。US部分通过netlink和ioctls与内核部分通信。我在netlink中将指针从64位转换为32位,再转换回64位时遇到问题 我的假设是正确的,我只需要保持指针大小和相关类型转换相同吗?还有别的吗?内核或OSS源代码中有什么可以作为示例的吗Linux kernel 64位内核和32位用户空间之间的指针转换,linux-kernel,arm,64-bit,Linux Kernel,Arm,64 Bit,我有一个32位用户空间软件和一个64位内核。US部分通过netlink和ioctls与内核部分通信。我在netlink中将指针从64位转换为32位,再转换回64位时遇到问题 我的假设是正确的,我只需要保持指针大小和相关类型转换相同吗?还有别的吗?内核或OSS源代码中有什么可以作为示例的吗 在您提出建议之前-不,我不能用64位工具链重新编译我们的部分,其中涉及到二进制文件。因此,最后我将内核指针交换为数字(转换为uint64_t),并在返回内核空间时将其转换回指针。 这是一个非常(!)糟糕的解决方
在您提出建议之前-不,我不能用64位工具链重新编译我们的部分,其中涉及到二进制文件。因此,最后我将内核指针交换为数字(转换为uint64_t),并在返回内核空间时将其转换回指针。
这是一个非常(!)糟糕的解决方案,因为最初的设计很糟糕。因此最后我将内核指针交换为数字(转换为uint64_t),并在返回内核空间时将它们转换回指针。
这是一个非常(!)糟糕的解决方案,因为初始设计很糟糕。内核无论如何都不能信任用户空间提供的指针,因此它必须使用一些(选中的)映射。内核无论如何都不能信任用户空间提供的指针,因此它必须使用一些(选中的)映射。