gpt4 book ai didi

从 __user 指针复制数据

转载 作者:行者123 更新时间:2023-11-30 18:48:21 27 4
gpt4 key购买 nike

我必须从 struct iw_point 中的指针访问数据基于 Linux 的嵌入式板上的变量。 struct 中包含的指针类型为__user 。但是当我尝试访问该位置时,程序不断出现段错误。

当我查看该指针指向的内存位置时,我注意到该位置并不位于必须从该位置读取的进程的地址空间中(通过读取 /proc/pid/maps 获得):

00400000-0048c000 r-xp 00000000 1f:04 83         /root/aravind/smapp
0049b000-0049c000 rw-p 0008b000 1f:04 83 /root/aravind/smapp

指针返回的位置是E80000,不在上面返回的范围内。

这是否意味着该位置位于首先触发指针返回的程序的地址空间之外(指针由 ioctl 调用返回)?

最佳答案

SIOCGIWSCAN ioctl 使用您提交的空格作为

iwr.u.data.pointer = p;
iwr.u.data.length = BUFSZ;

请求返回扫描的网络信息,因为 ioctl 无法在用户空间分配返回区域。检查您是否正确初始化了该指针和数据长度(建议使用 4k 缓冲区空间)。如果您不这样做,您可能会得到此类未定义的结果。

还要确保始终检查 ioctl 的返回值 - 在错误情况下,不要尝试访问返回区域。

如果您完成了所有这些操作,但它仍然没有返回有效的指针:仍然有许多驱动程序无法正确支持无线扩展。

此外,一些代码将使答案变得更加容易 - 正如您所提出的问题,如果不进行大量的探索和猜测,就很难回答。

关于从 __user 指针复制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46164234/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com