---- linux-2.6.22/grsecurity/gracl_cap.c~ 2007-08-09 22:52:32.000000000 +0200
-+++ linux-2.6.22/grsecurity/gracl_cap.c 2007-08-09 23:04:23.465906250 +0200
-@@ -37,7 +37,8 @@ static const char *captab_log[] = {
- "CAP_MKNOD",
- "CAP_LEASE",
- "CAP_AUDIT_WRITE",
-- "CAP_AUDIT_CONTROL"
-+ "CAP_AUDIT_CONTROL",
+--- e/grsecurity/gracl_cap.c~ 2008-05-18 23:53:55.000000000 +0200
++++ e/grsecurity/gracl_cap.c 2008-05-18 23:55:05.591733291 +0200
+@@ -39,7 +39,8 @@ static const char *captab_log[] = {
+ "CAP_AUDIT_CONTROL",
+ "CAP_SETFCAP",
+ "CAP_MAC_OVERRIDE",
+- "CAP_MAC_ADMIN"
++ "CAP_MAC_ADMIN",
+ "CAP_CONTEXT"
};
int cap_netlink_send(struct sock *sk, struct sk_buff *skb)
{
-- cap_t(NETLINK_CB(skb).eff_cap) = gr_cap_rtnetlink(sk);
-+ cap_t(NETLINK_CB(skb).eff_cap) = gr_cap_rtnetlink(sk) & vx_mbcap(cap_effective);
+- NETLINK_CB(skb).eff_cap = gr_cap_rtnetlink(sk);
++ NETLINK_CB(skb).eff_cap = cap_intersect(gr_cap_rtnetlink(sk), vx_mbcaps(current->cap_effective));
return 0;
}
---- linux-2.6.22/grsecurity/gracl_cap.c~ 2007-08-09 22:52:32.000000000 +0200
-+++ linux-2.6.22/grsecurity/gracl_cap.c 2007-08-09 23:04:23.465906250 +0200
-@@ -37,7 +37,8 @@ static const char *captab_log[] = {
- "CAP_MKNOD",
- "CAP_LEASE",
- "CAP_AUDIT_WRITE",
-- "CAP_AUDIT_CONTROL"
-+ "CAP_AUDIT_CONTROL",
+--- e/grsecurity/gracl_cap.c~ 2008-05-18 23:53:55.000000000 +0200
++++ e/grsecurity/gracl_cap.c 2008-05-18 23:55:05.591733291 +0200
+@@ -39,7 +39,8 @@ static const char *captab_log[] = {
+ "CAP_AUDIT_CONTROL",
+ "CAP_SETFCAP",
+ "CAP_MAC_OVERRIDE",
+- "CAP_MAC_ADMIN"
++ "CAP_MAC_ADMIN",
+ "CAP_CONTEXT"
};
int cap_netlink_send(struct sock *sk, struct sk_buff *skb)
{
-- cap_t(NETLINK_CB(skb).eff_cap) = gr_cap_rtnetlink(sk);
-+ cap_t(NETLINK_CB(skb).eff_cap) = gr_cap_rtnetlink(sk) & vx_mbcap(cap_effective);
+- NETLINK_CB(skb).eff_cap = gr_cap_rtnetlink(sk);
++ NETLINK_CB(skb).eff_cap = cap_intersect(gr_cap_rtnetlink(sk), vx_mbcaps(current->cap_effective));
return 0;
}