Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux
This commit is contained in:
@@ -513,6 +513,20 @@ void *genlmsg_put(struct sk_buff *skb, u32 portid, u32 seq,
|
||||
}
|
||||
EXPORT_SYMBOL(genlmsg_put);
|
||||
|
||||
static int genl_lock_start(struct netlink_callback *cb)
|
||||
{
|
||||
/* our ops are always const - netlink API doesn't propagate that */
|
||||
const struct genl_ops *ops = cb->data;
|
||||
int rc = 0;
|
||||
|
||||
if (ops->start) {
|
||||
genl_lock();
|
||||
rc = ops->start(cb);
|
||||
genl_unlock();
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
||||
static int genl_lock_dumpit(struct sk_buff *skb, struct netlink_callback *cb)
|
||||
{
|
||||
/* our ops are always const - netlink API doesn't propagate that */
|
||||
@@ -577,6 +591,7 @@ static int genl_family_rcv_msg(struct genl_family *family,
|
||||
.module = family->module,
|
||||
/* we have const, but the netlink API doesn't */
|
||||
.data = (void *)ops,
|
||||
.start = genl_lock_start,
|
||||
.dump = genl_lock_dumpit,
|
||||
.done = genl_lock_done,
|
||||
};
|
||||
@@ -588,6 +603,7 @@ static int genl_family_rcv_msg(struct genl_family *family,
|
||||
} else {
|
||||
struct netlink_dump_control c = {
|
||||
.module = family->module,
|
||||
.start = ops->start,
|
||||
.dump = ops->dumpit,
|
||||
.done = ops->done,
|
||||
};
|
||||
|
Reference in New Issue
Block a user