|
@@ -1084,7 +1084,8 @@ static int tc_get_qdisc(struct sk_buff *skb, struct nlmsghdr *n)
|
|
|
struct Qdisc *p = NULL;
|
|
|
int err;
|
|
|
|
|
|
- if ((n->nlmsg_type != RTM_GETQDISC) && !capable(CAP_NET_ADMIN))
|
|
|
+ if ((n->nlmsg_type != RTM_GETQDISC) &&
|
|
|
+ !ns_capable(net->user_ns, CAP_NET_ADMIN))
|
|
|
return -EPERM;
|
|
|
|
|
|
err = nlmsg_parse(n, sizeof(*tcm), tca, TCA_MAX, NULL);
|
|
@@ -1151,7 +1152,7 @@ static int tc_modify_qdisc(struct sk_buff *skb, struct nlmsghdr *n)
|
|
|
struct Qdisc *q, *p;
|
|
|
int err;
|
|
|
|
|
|
- if (!capable(CAP_NET_ADMIN))
|
|
|
+ if (!ns_capable(net->user_ns, CAP_NET_ADMIN))
|
|
|
return -EPERM;
|
|
|
|
|
|
replay:
|
|
@@ -1490,7 +1491,8 @@ static int tc_ctl_tclass(struct sk_buff *skb, struct nlmsghdr *n)
|
|
|
u32 qid;
|
|
|
int err;
|
|
|
|
|
|
- if ((n->nlmsg_type != RTM_GETTCLASS) && !capable(CAP_NET_ADMIN))
|
|
|
+ if ((n->nlmsg_type != RTM_GETTCLASS) &&
|
|
|
+ !ns_capable(net->user_ns, CAP_NET_ADMIN))
|
|
|
return -EPERM;
|
|
|
|
|
|
err = nlmsg_parse(n, sizeof(*tcm), tca, TCA_MAX, NULL);
|