mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 12:43:29 +02:00
bpf: Document optval > PAGE_SIZE behavior for sockopt hooks
Extend existing doc with more details about requiring ctx->optlen = 0 for handling optval > PAGE_SIZE. Signed-off-by: Stanislav Fomichev <sdf@google.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Link: https://lore.kernel.org/bpf/20200617010416.93086-3-sdf@google.com
This commit is contained in:
committed by
Alexei Starovoitov
parent
a0cb12b031
commit
8030e250d8
@@ -86,6 +86,20 @@ then the next program in the chain (A) will see those changes,
|
|||||||
*not* the original input ``setsockopt`` arguments. The potentially
|
*not* the original input ``setsockopt`` arguments. The potentially
|
||||||
modified values will be then passed down to the kernel.
|
modified values will be then passed down to the kernel.
|
||||||
|
|
||||||
|
Large optval
|
||||||
|
============
|
||||||
|
When the ``optval`` is greater than the ``PAGE_SIZE``, the BPF program
|
||||||
|
can access only the first ``PAGE_SIZE`` of that data. So it has to options:
|
||||||
|
|
||||||
|
* Set ``optlen`` to zero, which indicates that the kernel should
|
||||||
|
use the original buffer from the userspace. Any modifications
|
||||||
|
done by the BPF program to the ``optval`` are ignored.
|
||||||
|
* Set ``optlen`` to the value less than ``PAGE_SIZE``, which
|
||||||
|
indicates that the kernel should use BPF's trimmed ``optval``.
|
||||||
|
|
||||||
|
When the BPF program returns with the ``optlen`` greater than
|
||||||
|
``PAGE_SIZE``, the userspace will receive ``EFAULT`` errno.
|
||||||
|
|
||||||
Example
|
Example
|
||||||
=======
|
=======
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user