diff options
Diffstat (limited to 'drivers/connector/cn_queue.c')
-rw-r--r-- | drivers/connector/cn_queue.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/connector/cn_queue.c b/drivers/connector/cn_queue.c index 4a1dfe1f4ba9..210338ea222f 100644 --- a/drivers/connector/cn_queue.c +++ b/drivers/connector/cn_queue.c | |||
@@ -78,18 +78,20 @@ void cn_queue_wrapper(struct work_struct *work) | |||
78 | struct cn_callback_entry *cbq = | 78 | struct cn_callback_entry *cbq = |
79 | container_of(work, struct cn_callback_entry, work); | 79 | container_of(work, struct cn_callback_entry, work); |
80 | struct cn_callback_data *d = &cbq->data; | 80 | struct cn_callback_data *d = &cbq->data; |
81 | struct cn_msg *msg = NLMSG_DATA(nlmsg_hdr(d->skb)); | ||
82 | struct netlink_skb_parms *nsp = &NETLINK_CB(d->skb); | ||
81 | 83 | ||
82 | d->callback(d->callback_priv); | 84 | d->callback(msg, nsp); |
83 | 85 | ||
84 | d->destruct_data(d->ddata); | 86 | kfree_skb(d->skb); |
85 | d->ddata = NULL; | 87 | d->skb = NULL; |
86 | 88 | ||
87 | kfree(d->free); | 89 | kfree(d->free); |
88 | } | 90 | } |
89 | 91 | ||
90 | static struct cn_callback_entry * | 92 | static struct cn_callback_entry * |
91 | cn_queue_alloc_callback_entry(char *name, struct cb_id *id, | 93 | cn_queue_alloc_callback_entry(char *name, struct cb_id *id, |
92 | void (*callback)(struct cn_msg *)) | 94 | void (*callback)(struct cn_msg *, struct netlink_skb_parms *)) |
93 | { | 95 | { |
94 | struct cn_callback_entry *cbq; | 96 | struct cn_callback_entry *cbq; |
95 | 97 | ||
@@ -123,7 +125,7 @@ int cn_cb_equal(struct cb_id *i1, struct cb_id *i2) | |||
123 | } | 125 | } |
124 | 126 | ||
125 | int cn_queue_add_callback(struct cn_queue_dev *dev, char *name, struct cb_id *id, | 127 | int cn_queue_add_callback(struct cn_queue_dev *dev, char *name, struct cb_id *id, |
126 | void (*callback)(struct cn_msg *)) | 128 | void (*callback)(struct cn_msg *, struct netlink_skb_parms *)) |
127 | { | 129 | { |
128 | struct cn_callback_entry *cbq, *__cbq; | 130 | struct cn_callback_entry *cbq, *__cbq; |
129 | int found = 0; | 131 | int found = 0; |