gpt4 book ai didi

linux - Linux 内核中 "copy_from_user"的示例(只是将指针复制到一个 int)

转载 作者:太空宇宙 更新时间:2023-11-04 10:03:20 25 4
gpt4 key购买 nike

我知道有很多关于此的帖子,但大多数都非常复杂,我希望有人可以通过我的简单示例帮助我。

我正在编写一个系统调用,我正在编写的函数具有以下形式:

SYS_CALLDEFINE4(calc, int, param1, int, param2, char, operation, int*, result) 
{
//Do system call stuff here
}

我知道指向 int 的指针将是一个问题,因为用户空间应用程序可能已经传递了一个指向重要系统空间的指针(我们不想弄乱它)。所以我需要使用 copy_from_user 函数。

有人可以举例说明如何在确保您可以正确访问该指针的情况下正确使用这两个函数吗?

最佳答案

替换

*result = <value>;

会是

int local_value = <value>;
if (copy_to_user(&local_value, result, sizeof(*result)))
{
// 'result' points to inaccessible memory.
}
// assigning 'result' has been successful.

或者,因为 result 的大小很小(在您的情况下是 int),您可以使用 put_user,它更简单且更有效:

if (put_user(<value>, result) < 0)
{
// 'result' points to inaccessible memory.
}
// assigning 'result' has been successful.

关于linux - Linux 内核中 "copy_from_user"的示例(只是将指针复制到一个 int),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54394702/

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