Commit 22e70050 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by David S. Miller

[XFRM_USER]: avoid pointless void ** casts

All ->doit handlers want a struct rtattr **, so pass down the right
type.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 9c2440bb
...@@ -434,18 +434,19 @@ error_no_put: ...@@ -434,18 +434,19 @@ error_no_put:
return NULL; return NULL;
} }
static int xfrm_add_sa(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma) static int xfrm_add_sa(struct sk_buff *skb, struct nlmsghdr *nlh,
struct rtattr **xfrma)
{ {
struct xfrm_usersa_info *p = NLMSG_DATA(nlh); struct xfrm_usersa_info *p = NLMSG_DATA(nlh);
struct xfrm_state *x; struct xfrm_state *x;
int err; int err;
struct km_event c; struct km_event c;
err = verify_newsa_info(p, (struct rtattr **)xfrma); err = verify_newsa_info(p, xfrma);
if (err) if (err)
return err; return err;
x = xfrm_state_construct(p, (struct rtattr **)xfrma, &err); x = xfrm_state_construct(p, xfrma, &err);
if (!x) if (!x)
return err; return err;
...@@ -507,14 +508,15 @@ static struct xfrm_state *xfrm_user_state_lookup(struct xfrm_usersa_id *p, ...@@ -507,14 +508,15 @@ static struct xfrm_state *xfrm_user_state_lookup(struct xfrm_usersa_id *p,
return x; return x;
} }
static int xfrm_del_sa(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma) static int xfrm_del_sa(struct sk_buff *skb, struct nlmsghdr *nlh,
struct rtattr **xfrma)
{ {
struct xfrm_state *x; struct xfrm_state *x;
int err = -ESRCH; int err = -ESRCH;
struct km_event c; struct km_event c;
struct xfrm_usersa_id *p = NLMSG_DATA(nlh); struct xfrm_usersa_id *p = NLMSG_DATA(nlh);
x = xfrm_user_state_lookup(p, (struct rtattr **)xfrma, &err); x = xfrm_user_state_lookup(p, xfrma, &err);
if (x == NULL) if (x == NULL)
return err; return err;
...@@ -672,14 +674,15 @@ static struct sk_buff *xfrm_state_netlink(struct sk_buff *in_skb, ...@@ -672,14 +674,15 @@ static struct sk_buff *xfrm_state_netlink(struct sk_buff *in_skb,
return skb; return skb;
} }
static int xfrm_get_sa(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma) static int xfrm_get_sa(struct sk_buff *skb, struct nlmsghdr *nlh,
struct rtattr **xfrma)
{ {
struct xfrm_usersa_id *p = NLMSG_DATA(nlh); struct xfrm_usersa_id *p = NLMSG_DATA(nlh);
struct xfrm_state *x; struct xfrm_state *x;
struct sk_buff *resp_skb; struct sk_buff *resp_skb;
int err = -ESRCH; int err = -ESRCH;
x = xfrm_user_state_lookup(p, (struct rtattr **)xfrma, &err); x = xfrm_user_state_lookup(p, xfrma, &err);
if (x == NULL) if (x == NULL)
goto out_noput; goto out_noput;
...@@ -718,7 +721,8 @@ static int verify_userspi_info(struct xfrm_userspi_info *p) ...@@ -718,7 +721,8 @@ static int verify_userspi_info(struct xfrm_userspi_info *p)
return 0; return 0;
} }
static int xfrm_alloc_userspi(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma) static int xfrm_alloc_userspi(struct sk_buff *skb, struct nlmsghdr *nlh,
struct rtattr **xfrma)
{ {
struct xfrm_state *x; struct xfrm_state *x;
struct xfrm_userspi_info *p; struct xfrm_userspi_info *p;
...@@ -1013,7 +1017,8 @@ static struct xfrm_policy *xfrm_policy_construct(struct xfrm_userpolicy_info *p, ...@@ -1013,7 +1017,8 @@ static struct xfrm_policy *xfrm_policy_construct(struct xfrm_userpolicy_info *p,
return NULL; return NULL;
} }
static int xfrm_add_policy(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma) static int xfrm_add_policy(struct sk_buff *skb, struct nlmsghdr *nlh,
struct rtattr **xfrma)
{ {
struct xfrm_userpolicy_info *p = NLMSG_DATA(nlh); struct xfrm_userpolicy_info *p = NLMSG_DATA(nlh);
struct xfrm_policy *xp; struct xfrm_policy *xp;
...@@ -1024,11 +1029,11 @@ static int xfrm_add_policy(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfr ...@@ -1024,11 +1029,11 @@ static int xfrm_add_policy(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfr
err = verify_newpolicy_info(p); err = verify_newpolicy_info(p);
if (err) if (err)
return err; return err;
err = verify_sec_ctx_len((struct rtattr **)xfrma); err = verify_sec_ctx_len(xfrma);
if (err) if (err)
return err; return err;
xp = xfrm_policy_construct(p, (struct rtattr **)xfrma, &err); xp = xfrm_policy_construct(p, xfrma, &err);
if (!xp) if (!xp)
return err; return err;
...@@ -1227,7 +1232,8 @@ static struct sk_buff *xfrm_policy_netlink(struct sk_buff *in_skb, ...@@ -1227,7 +1232,8 @@ static struct sk_buff *xfrm_policy_netlink(struct sk_buff *in_skb,
return skb; return skb;
} }
static int xfrm_get_policy(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma) static int xfrm_get_policy(struct sk_buff *skb, struct nlmsghdr *nlh,
struct rtattr **xfrma)
{ {
struct xfrm_policy *xp; struct xfrm_policy *xp;
struct xfrm_userpolicy_id *p; struct xfrm_userpolicy_id *p;
...@@ -1239,7 +1245,7 @@ static int xfrm_get_policy(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfr ...@@ -1239,7 +1245,7 @@ static int xfrm_get_policy(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfr
p = NLMSG_DATA(nlh); p = NLMSG_DATA(nlh);
delete = nlh->nlmsg_type == XFRM_MSG_DELPOLICY; delete = nlh->nlmsg_type == XFRM_MSG_DELPOLICY;
err = copy_from_user_policy_type(&type, (struct rtattr **)xfrma); err = copy_from_user_policy_type(&type, xfrma);
if (err) if (err)
return err; return err;
...@@ -1250,11 +1256,10 @@ static int xfrm_get_policy(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfr ...@@ -1250,11 +1256,10 @@ static int xfrm_get_policy(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfr
if (p->index) if (p->index)
xp = xfrm_policy_byid(type, p->dir, p->index, delete); xp = xfrm_policy_byid(type, p->dir, p->index, delete);
else { else {
struct rtattr **rtattrs = (struct rtattr **)xfrma; struct rtattr *rt = xfrma[XFRMA_SEC_CTX-1];
struct rtattr *rt = rtattrs[XFRMA_SEC_CTX-1];
struct xfrm_policy tmp; struct xfrm_policy tmp;
err = verify_sec_ctx_len(rtattrs); err = verify_sec_ctx_len(xfrma);
if (err) if (err)
return err; return err;
...@@ -1302,7 +1307,8 @@ out: ...@@ -1302,7 +1307,8 @@ out:
return err; return err;
} }
static int xfrm_flush_sa(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma) static int xfrm_flush_sa(struct sk_buff *skb, struct nlmsghdr *nlh,
struct rtattr **xfrma)
{ {
struct km_event c; struct km_event c;
struct xfrm_usersa_flush *p = NLMSG_DATA(nlh); struct xfrm_usersa_flush *p = NLMSG_DATA(nlh);
...@@ -1367,7 +1373,8 @@ nlmsg_failure: ...@@ -1367,7 +1373,8 @@ nlmsg_failure:
return -1; return -1;
} }
static int xfrm_get_ae(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma) static int xfrm_get_ae(struct sk_buff *skb, struct nlmsghdr *nlh,
struct rtattr **xfrma)
{ {
struct xfrm_state *x; struct xfrm_state *x;
struct sk_buff *r_skb; struct sk_buff *r_skb;
...@@ -1415,7 +1422,8 @@ static int xfrm_get_ae(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma) ...@@ -1415,7 +1422,8 @@ static int xfrm_get_ae(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma)
return err; return err;
} }
static int xfrm_new_ae(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma) static int xfrm_new_ae(struct sk_buff *skb, struct nlmsghdr *nlh,
struct rtattr **xfrma)
{ {
struct xfrm_state *x; struct xfrm_state *x;
struct km_event c; struct km_event c;
...@@ -1439,7 +1447,7 @@ static int xfrm_new_ae(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma) ...@@ -1439,7 +1447,7 @@ static int xfrm_new_ae(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma)
goto out; goto out;
spin_lock_bh(&x->lock); spin_lock_bh(&x->lock);
err = xfrm_update_ae_params(x,(struct rtattr **)xfrma); err = xfrm_update_ae_params(x, xfrma);
spin_unlock_bh(&x->lock); spin_unlock_bh(&x->lock);
if (err < 0) if (err < 0)
goto out; goto out;
...@@ -1455,14 +1463,15 @@ out: ...@@ -1455,14 +1463,15 @@ out:
return err; return err;
} }
static int xfrm_flush_policy(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma) static int xfrm_flush_policy(struct sk_buff *skb, struct nlmsghdr *nlh,
struct rtattr **xfrma)
{ {
struct km_event c; struct km_event c;
u8 type = XFRM_POLICY_TYPE_MAIN; u8 type = XFRM_POLICY_TYPE_MAIN;
int err; int err;
struct xfrm_audit audit_info; struct xfrm_audit audit_info;
err = copy_from_user_policy_type(&type, (struct rtattr **)xfrma); err = copy_from_user_policy_type(&type, xfrma);
if (err) if (err)
return err; return err;
...@@ -1477,7 +1486,8 @@ static int xfrm_flush_policy(struct sk_buff *skb, struct nlmsghdr *nlh, void **x ...@@ -1477,7 +1486,8 @@ static int xfrm_flush_policy(struct sk_buff *skb, struct nlmsghdr *nlh, void **x
return 0; return 0;
} }
static int xfrm_add_pol_expire(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma) static int xfrm_add_pol_expire(struct sk_buff *skb, struct nlmsghdr *nlh,
struct rtattr **xfrma)
{ {
struct xfrm_policy *xp; struct xfrm_policy *xp;
struct xfrm_user_polexpire *up = NLMSG_DATA(nlh); struct xfrm_user_polexpire *up = NLMSG_DATA(nlh);
...@@ -1485,18 +1495,17 @@ static int xfrm_add_pol_expire(struct sk_buff *skb, struct nlmsghdr *nlh, void * ...@@ -1485,18 +1495,17 @@ static int xfrm_add_pol_expire(struct sk_buff *skb, struct nlmsghdr *nlh, void *
u8 type = XFRM_POLICY_TYPE_MAIN; u8 type = XFRM_POLICY_TYPE_MAIN;
int err = -ENOENT; int err = -ENOENT;
err = copy_from_user_policy_type(&type, (struct rtattr **)xfrma); err = copy_from_user_policy_type(&type, xfrma);
if (err) if (err)
return err; return err;
if (p->index) if (p->index)
xp = xfrm_policy_byid(type, p->dir, p->index, 0); xp = xfrm_policy_byid(type, p->dir, p->index, 0);
else { else {
struct rtattr **rtattrs = (struct rtattr **)xfrma; struct rtattr *rt = xfrma[XFRMA_SEC_CTX-1];
struct rtattr *rt = rtattrs[XFRMA_SEC_CTX-1];
struct xfrm_policy tmp; struct xfrm_policy tmp;
err = verify_sec_ctx_len(rtattrs); err = verify_sec_ctx_len(xfrma);
if (err) if (err)
return err; return err;
...@@ -1537,7 +1546,8 @@ out: ...@@ -1537,7 +1546,8 @@ out:
return err; return err;
} }
static int xfrm_add_sa_expire(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma) static int xfrm_add_sa_expire(struct sk_buff *skb, struct nlmsghdr *nlh,
struct rtattr **xfrma)
{ {
struct xfrm_state *x; struct xfrm_state *x;
int err; int err;
...@@ -1568,7 +1578,8 @@ out: ...@@ -1568,7 +1578,8 @@ out:
return err; return err;
} }
static int xfrm_add_acquire(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma) static int xfrm_add_acquire(struct sk_buff *skb, struct nlmsghdr *nlh,
struct rtattr **xfrma)
{ {
struct xfrm_policy *xp; struct xfrm_policy *xp;
struct xfrm_user_tmpl *ut; struct xfrm_user_tmpl *ut;
...@@ -1647,7 +1658,7 @@ static const int xfrm_msg_min[XFRM_NR_MSGTYPES] = { ...@@ -1647,7 +1658,7 @@ static const int xfrm_msg_min[XFRM_NR_MSGTYPES] = {
#undef XMSGSIZE #undef XMSGSIZE
static struct xfrm_link { static struct xfrm_link {
int (*doit)(struct sk_buff *, struct nlmsghdr *, void **); int (*doit)(struct sk_buff *, struct nlmsghdr *, struct rtattr **);
int (*dump)(struct sk_buff *, struct netlink_callback *); int (*dump)(struct sk_buff *, struct netlink_callback *);
} xfrm_dispatch[XFRM_NR_MSGTYPES] = { } xfrm_dispatch[XFRM_NR_MSGTYPES] = {
[XFRM_MSG_NEWSA - XFRM_MSG_BASE] = { .doit = xfrm_add_sa }, [XFRM_MSG_NEWSA - XFRM_MSG_BASE] = { .doit = xfrm_add_sa },
...@@ -1735,7 +1746,7 @@ static int xfrm_user_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh, int *err ...@@ -1735,7 +1746,7 @@ static int xfrm_user_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh, int *err
if (link->doit == NULL) if (link->doit == NULL)
goto err_einval; goto err_einval;
*errp = link->doit(skb, nlh, (void **) &xfrma); *errp = link->doit(skb, nlh, xfrma);
return *errp; return *errp;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment