* kernel, by Linus Torvalds and others.
*/
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
#include <linux/kernel.h>
#include <asm/uaccess.h>
#include <linux/completion.h>
struct sk_buff *request;
char name[IFNAMSIZ];
+ if (!capable(CAP_NET_ADMIN))
+ return -EPERM;
+
if (copy_from_user(name, uname, IFNAMSIZ))
return -EFAULT;
struct net_device *port;
int err;
+ if (!capable(CAP_NET_ADMIN))
+ return -EPERM;
+
port = __dev_get_by_index(&init_net, port_ifindex);
if (!port)
return -EINVAL;
* (limited to a page for sanity)
* offset -- number of records to skip
*/
-static int brc_get_fdb_entries(struct net_device *dev, void __user *userbuf,
+static int brc_get_fdb_entries(struct net_device *dev, void __user *userbuf,
unsigned long maxnum, unsigned long offset)
{
struct nlattr *attrs[BRC_GENL_A_MAX + 1];
void *data;
ans_skb = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL);
- if (!ans_skb)
+ if (!ans_skb)
return -ENOMEM;
data = genlmsg_put_reply(ans_skb, info, &brc_genl_family,
/* Wait for reply. */
error = -ETIMEDOUT;
if (!wait_for_completion_timeout(&brc_done, BRC_TIMEOUT)) {
- printk(KERN_WARNING "brcompat: timed out waiting for userspace\n");
+ pr_warn("timed out waiting for userspace\n");
goto error;
}
goto error;
err = genl_register_ops(&brc_genl_family, &brc_genl_ops_query_dp);
- if (err != 0)
+ if (err != 0)
goto err_unregister;
err = genl_register_ops(&brc_genl_family, &brc_genl_ops_dp_result);
- if (err != 0)
+ if (err != 0)
goto err_unregister;
err = genl_register_ops(&brc_genl_family, &brc_genl_ops_set_proc);
- if (err != 0)
+ if (err != 0)
goto err_unregister;
strcpy(brc_mc_group.name, "brcompat");
err_unregister:
genl_unregister_family(&brc_genl_family);
error:
- printk(KERN_EMERG "brcompat: failed to install!");
+ pr_emerg("failed to install!\n");
return err;
}