Commit 88d36a99 authored by Johannes Berg's avatar Johannes Berg Committed by David S. Miller
Browse files

taskstats: use genl_register_family_with_ops()



This simplifies the code since there's no longer a
need to have error handling in the registration.

Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 1e9f3d6f
Loading
Loading
Loading
Loading
+14 −25
Original line number Diff line number Diff line
@@ -673,17 +673,18 @@ err:
	nlmsg_free(rep_skb);
}

static struct genl_ops taskstats_ops = {
static struct genl_ops taskstats_ops[] = {
	{
		.cmd		= TASKSTATS_CMD_GET,
		.doit		= taskstats_user_cmd,
		.policy		= taskstats_cmd_get_policy,
		.flags		= GENL_ADMIN_PERM,
};

static struct genl_ops cgroupstats_ops = {
	},
	{
		.cmd		= CGROUPSTATS_CMD_GET,
		.doit		= cgroupstats_user_cmd,
		.policy		= cgroupstats_cmd_get_policy,
	},
};

/* Needed early in initialization */
@@ -702,26 +703,14 @@ static int __init taskstats_init(void)
{
	int rc;

	rc = genl_register_family(&family);
	rc = genl_register_family_with_ops(&family, taskstats_ops,
					   ARRAY_SIZE(taskstats_ops));
	if (rc)
		return rc;

	rc = genl_register_ops(&family, &taskstats_ops);
	if (rc < 0)
		goto err;

	rc = genl_register_ops(&family, &cgroupstats_ops);
	if (rc < 0)
		goto err_cgroup_ops;

	family_registered = 1;
	pr_info("registered taskstats version %d\n", TASKSTATS_GENL_VERSION);
	return 0;
err_cgroup_ops:
	genl_unregister_ops(&family, &taskstats_ops);
err:
	genl_unregister_family(&family);
	return rc;
}

/*