diff options
author | Li Zefan <lizf@cn.fujitsu.com> | 2008-01-04 04:55:01 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-28 18:00:38 -0500 |
commit | 00f5e06c032507206c4ac0c846ad82b75ae7665b (patch) | |
tree | 90511a59a2c738601d55425a8c8c5cb6e27b1025 /drivers/connector/connector.c | |
parent | fd00eeccd92b7b4b5ca95bd988c195efb4e5ec29 (diff) |
[CONNECTOR]: clean up {,__}cn_rx_skb()
- __cn_rx_skb() does nothing but calls cn_call_callback(), it doesn't
check skb and msg sizes as the comment suggests, but cn_rx_skb() checks
those sizes.
- In cn_rx_skb() Local variable 'len' is not used. 'len' is probably
intended to be passed to skb_pull(), but here skb_pull() is not needed,
instead skb_free() is called.
Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/connector/connector.c')
-rw-r--r-- | drivers/connector/connector.c | 30 |
1 files changed, 4 insertions, 26 deletions
diff --git a/drivers/connector/connector.c b/drivers/connector/connector.c index edf1349c4e1f..37976dcf044b 100644 --- a/drivers/connector/connector.c +++ b/drivers/connector/connector.c | |||
@@ -182,33 +182,14 @@ static int cn_call_callback(struct cn_msg *msg, void (*destruct_data)(void *), v | |||
182 | } | 182 | } |
183 | 183 | ||
184 | /* | 184 | /* |
185 | * Skb receive helper - checks skb and msg size and calls callback | ||
186 | * helper. | ||
187 | */ | ||
188 | static int __cn_rx_skb(struct sk_buff *skb, struct nlmsghdr *nlh) | ||
189 | { | ||
190 | u32 pid, uid, seq, group; | ||
191 | struct cn_msg *msg; | ||
192 | |||
193 | pid = NETLINK_CREDS(skb)->pid; | ||
194 | uid = NETLINK_CREDS(skb)->uid; | ||
195 | seq = nlh->nlmsg_seq; | ||
196 | group = NETLINK_CB((skb)).dst_group; | ||
197 | msg = NLMSG_DATA(nlh); | ||
198 | |||
199 | return cn_call_callback(msg, (void (*)(void *))kfree_skb, skb); | ||
200 | } | ||
201 | |||
202 | /* | ||
203 | * Main netlink receiving function. | 185 | * Main netlink receiving function. |
204 | * | 186 | * |
205 | * It checks skb and netlink header sizes and calls the skb receive | 187 | * It checks skb, netlink header and msg sizes, and calls callback helper. |
206 | * helper with a shared skb. | ||
207 | */ | 188 | */ |
208 | static void cn_rx_skb(struct sk_buff *__skb) | 189 | static void cn_rx_skb(struct sk_buff *__skb) |
209 | { | 190 | { |
191 | struct cn_msg *msg; | ||
210 | struct nlmsghdr *nlh; | 192 | struct nlmsghdr *nlh; |
211 | u32 len; | ||
212 | int err; | 193 | int err; |
213 | struct sk_buff *skb; | 194 | struct sk_buff *skb; |
214 | 195 | ||
@@ -224,11 +205,8 @@ static void cn_rx_skb(struct sk_buff *__skb) | |||
224 | return; | 205 | return; |
225 | } | 206 | } |
226 | 207 | ||
227 | len = NLMSG_ALIGN(nlh->nlmsg_len); | 208 | msg = NLMSG_DATA(nlh); |
228 | if (len > skb->len) | 209 | err = cn_call_callback(msg, (void (*)(void *))kfree_skb, skb); |
229 | len = skb->len; | ||
230 | |||
231 | err = __cn_rx_skb(skb, nlh); | ||
232 | if (err < 0) | 210 | if (err < 0) |
233 | kfree_skb(skb); | 211 | kfree_skb(skb); |
234 | } | 212 | } |