cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

netdev-notifier-error-inject.c (1586B)


      1// SPDX-License-Identifier: GPL-2.0-only
      2#include <linux/kernel.h>
      3#include <linux/module.h>
      4#include <linux/netdevice.h>
      5
      6#include "notifier-error-inject.h"
      7
      8static int priority;
      9module_param(priority, int, 0);
     10MODULE_PARM_DESC(priority, "specify netdevice notifier priority");
     11
     12static struct notifier_err_inject netdev_notifier_err_inject = {
     13	.actions = {
     14		{ NOTIFIER_ERR_INJECT_ACTION(NETDEV_REGISTER) },
     15		{ NOTIFIER_ERR_INJECT_ACTION(NETDEV_CHANGEMTU) },
     16		{ NOTIFIER_ERR_INJECT_ACTION(NETDEV_CHANGENAME) },
     17		{ NOTIFIER_ERR_INJECT_ACTION(NETDEV_PRE_UP) },
     18		{ NOTIFIER_ERR_INJECT_ACTION(NETDEV_PRE_TYPE_CHANGE) },
     19		{ NOTIFIER_ERR_INJECT_ACTION(NETDEV_POST_INIT) },
     20		{ NOTIFIER_ERR_INJECT_ACTION(NETDEV_PRECHANGEMTU) },
     21		{ NOTIFIER_ERR_INJECT_ACTION(NETDEV_PRECHANGEUPPER) },
     22		{ NOTIFIER_ERR_INJECT_ACTION(NETDEV_CHANGEUPPER) },
     23		{}
     24	}
     25};
     26
     27static struct dentry *dir;
     28
     29static int netdev_err_inject_init(void)
     30{
     31	int err;
     32
     33	dir = notifier_err_inject_init("netdev", notifier_err_inject_dir,
     34				       &netdev_notifier_err_inject, priority);
     35	if (IS_ERR(dir))
     36		return PTR_ERR(dir);
     37
     38	err = register_netdevice_notifier(&netdev_notifier_err_inject.nb);
     39	if (err)
     40		debugfs_remove_recursive(dir);
     41
     42	return err;
     43}
     44
     45static void netdev_err_inject_exit(void)
     46{
     47	unregister_netdevice_notifier(&netdev_notifier_err_inject.nb);
     48	debugfs_remove_recursive(dir);
     49}
     50
     51module_init(netdev_err_inject_init);
     52module_exit(netdev_err_inject_exit);
     53
     54MODULE_DESCRIPTION("Netdevice notifier error injection module");
     55MODULE_LICENSE("GPL");
     56MODULE_AUTHOR("Nikolay Aleksandrov <razor@blackwall.org>");