Теперь, мальчики и девочки, в ядре можно писать вот такое вот:
scoped_guard(raw_spinlock_irqsave, &foo->lock) {
[...]
}
и вот такое:
struct device *dev __free(put_device) = kzalloc(sizeof(*dev), GFP_KERNEL);
И никаких больше протекших ресурсов!
Ссылка на merge: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=04f2933d375e3f90d4435b7b518d3065afd1fa25