mirror of
https://github.com/torvalds/linux.git
synced 2024-12-25 20:32:22 +00:00
f7e47677e3
Add a key/keyring change notification facility whereby notifications about changes in key and keyring content and attributes can be received. Firstly, an event queue needs to be created: pipe2(fds, O_NOTIFICATION_PIPE); ioctl(fds[1], IOC_WATCH_QUEUE_SET_SIZE, 256); then a notification can be set up to report notifications via that queue: struct watch_notification_filter filter = { .nr_filters = 1, .filters = { [0] = { .type = WATCH_TYPE_KEY_NOTIFY, .subtype_filter[0] = UINT_MAX, }, }, }; ioctl(fds[1], IOC_WATCH_QUEUE_SET_FILTER, &filter); keyctl_watch_key(KEY_SPEC_SESSION_KEYRING, fds[1], 0x01); After that, records will be placed into the queue when events occur in which keys are changed in some way. Records are of the following format: struct key_notification { struct watch_notification watch; __u32 key_id; __u32 aux; } *n; Where: n->watch.type will be WATCH_TYPE_KEY_NOTIFY. n->watch.subtype will indicate the type of event, such as NOTIFY_KEY_REVOKED. n->watch.info & WATCH_INFO_LENGTH will indicate the length of the record. n->watch.info & WATCH_INFO_ID will be the second argument to keyctl_watch_key(), shifted. n->key will be the ID of the affected key. n->aux will hold subtype-dependent information, such as the key being linked into the keyring specified by n->key in the case of NOTIFY_KEY_LINKED. Note that it is permissible for event records to be of variable length - or, at least, the length may be dependent on the subtype. Note also that the queue can be shared between multiple notifications of various types. Signed-off-by: David Howells <dhowells@redhat.com> Reviewed-by: James Morris <jamorris@linux.microsoft.com> |
||
---|---|---|
.. | ||
ABI | ||
accounting | ||
admin-guide | ||
arm | ||
arm64 | ||
block | ||
bpf | ||
cdrom | ||
core-api | ||
cpu-freq | ||
crypto | ||
dev-tools | ||
devicetree | ||
doc-guide | ||
driver-api | ||
fault-injection | ||
fb | ||
features | ||
filesystems | ||
firmware_class | ||
firmware-guide | ||
fpga | ||
gpu | ||
hid | ||
hwmon | ||
i2c | ||
ia64 | ||
ide | ||
iio | ||
infiniband | ||
input | ||
isdn | ||
kbuild | ||
kernel-hacking | ||
leds | ||
livepatch | ||
locking | ||
m68k | ||
maintainer | ||
media | ||
mhi | ||
mips | ||
misc-devices | ||
netlabel | ||
networking | ||
nios2 | ||
nvdimm | ||
openrisc | ||
parisc | ||
PCI | ||
pcmcia | ||
power | ||
powerpc | ||
process | ||
RCU | ||
riscv | ||
s390 | ||
scheduler | ||
scsi | ||
security | ||
sh | ||
sound | ||
sparc | ||
sphinx | ||
sphinx-static | ||
spi | ||
target | ||
timers | ||
trace | ||
translations | ||
usb | ||
userspace-api | ||
virt | ||
vm | ||
w1 | ||
watchdog | ||
x86 | ||
xtensa | ||
.gitignore | ||
asm-annotations.rst | ||
atomic_bitops.txt | ||
atomic_t.txt | ||
bus-virt-phys-mapping.txt | ||
Changes | ||
CodingStyle | ||
conf.py | ||
COPYING-logo | ||
crc32.txt | ||
debugging-via-ohci1394.txt | ||
digsig.txt | ||
DMA-API-HOWTO.txt | ||
DMA-API.txt | ||
DMA-attributes.txt | ||
DMA-ISA-LPC.txt | ||
docutils.conf | ||
dontdiff | ||
futex-requeue-pi.txt | ||
hwspinlock.txt | ||
index.rst | ||
IPMI.txt | ||
IRQ-affinity.txt | ||
IRQ-domain.txt | ||
IRQ.txt | ||
irqflags-tracing.txt | ||
Kconfig | ||
kprobes.txt | ||
kref.txt | ||
logo.gif | ||
lzo.txt | ||
mailbox.txt | ||
Makefile | ||
memory-barriers.txt | ||
nommu-mmap.txt | ||
percpu-rw-semaphore.txt | ||
pi-futex.txt | ||
preempt-locking.txt | ||
rbtree.txt | ||
remoteproc.txt | ||
robust-futex-ABI.txt | ||
robust-futexes.txt | ||
rpmsg.txt | ||
speculation.txt | ||
static-keys.txt | ||
SubmittingPatches | ||
tee.txt | ||
this_cpu_ops.txt | ||
unaligned-memory-access.txt | ||
watch_queue.rst | ||
xz.txt |