Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

connector: make callback argument type explicit

The connector documentation states that the argument to the callback
function is always a pointer to a struct cn_msg, but rather than encode it
in the API itself, it uses a void pointer everywhere. This doesn't make
much sense to encode the pointer in documentation as it prevents proper C
type checking from occurring and can easily allow people to use the wrong
pointer type. So convert the argument type to an explicit struct cn_msg
pointer.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Mike Frysinger and committed by
David S. Miller
0741241c e36aa25a

+16 -19
+1 -3
Documentation/connector/cn_test.c
··· 32 32 static struct sock *nls; 33 33 static struct timer_list cn_test_timer; 34 34 35 - void cn_test_callback(void *data) 35 + void cn_test_callback(struct cn_msg *msg) 36 36 { 37 - struct cn_msg *msg = (struct cn_msg *)data; 38 - 39 37 printk("%s: %lu: idx=%x, val=%x, seq=%u, ack=%u, len=%d: %s.\n", 40 38 __func__, jiffies, msg->id.idx, msg->id.val, 41 39 msg->seq, msg->ack, msg->len, (char *)msg->data);
+1 -2
drivers/connector/cn_proc.c
··· 202 202 * cn_proc_mcast_ctl 203 203 * @data: message sent from userspace via the connector 204 204 */ 205 - static void cn_proc_mcast_ctl(void *data) 205 + static void cn_proc_mcast_ctl(struct cn_msg *msg) 206 206 { 207 - struct cn_msg *msg = data; 208 207 enum proc_cn_mcast_op *mc_op = NULL; 209 208 int err = 0; 210 209
+5 -2
drivers/connector/cn_queue.c
··· 87 87 kfree(d->free); 88 88 } 89 89 90 - static struct cn_callback_entry *cn_queue_alloc_callback_entry(char *name, struct cb_id *id, void (*callback)(void *)) 90 + static struct cn_callback_entry * 91 + cn_queue_alloc_callback_entry(char *name, struct cb_id *id, 92 + void (*callback)(struct cn_msg *)) 91 93 { 92 94 struct cn_callback_entry *cbq; 93 95 ··· 122 120 return ((i1->idx == i2->idx) && (i1->val == i2->val)); 123 121 } 124 122 125 - int cn_queue_add_callback(struct cn_queue_dev *dev, char *name, struct cb_id *id, void (*callback)(void *)) 123 + int cn_queue_add_callback(struct cn_queue_dev *dev, char *name, struct cb_id *id, 124 + void (*callback)(struct cn_msg *)) 126 125 { 127 126 struct cn_callback_entry *cbq, *__cbq; 128 127 int found = 0;
+3 -3
drivers/connector/connector.c
··· 269 269 * 270 270 * May sleep. 271 271 */ 272 - int cn_add_callback(struct cb_id *id, char *name, void (*callback)(void *)) 272 + int cn_add_callback(struct cb_id *id, char *name, 273 + void (*callback)(struct cn_msg *)) 273 274 { 274 275 int err; 275 276 struct cn_dev *dev = &cdev; ··· 352 351 * 353 352 * Used for notification of a request's processing. 354 353 */ 355 - static void cn_callback(void *data) 354 + static void cn_callback(struct cn_msg *msg) 356 355 { 357 - struct cn_msg *msg = data; 358 356 struct cn_ctl_msg *ctl; 359 357 struct cn_ctl_entry *ent; 360 358 u32 size;
+1 -2
drivers/staging/dst/dcore.c
··· 846 846 /* 847 847 * Configuration parser. 848 848 */ 849 - static void cn_dst_callback(void *data) 849 + static void cn_dst_callback(struct cn_msg *msg) 850 850 { 851 851 struct dst_ctl *ctl; 852 - struct cn_msg *msg = data; 853 852 int err; 854 853 struct dst_ctl_ack ack; 855 854 struct dst_node *n = NULL, *tmp;
+1 -2
drivers/video/uvesafb.c
··· 67 67 * find the kernel part of the task struct, copy the registers and 68 68 * the buffer contents and then complete the task. 69 69 */ 70 - static void uvesafb_cn_callback(void *data) 70 + static void uvesafb_cn_callback(struct cn_msg *msg) 71 71 { 72 - struct cn_msg *msg = data; 73 72 struct uvesafb_task *utask; 74 73 struct uvesafb_ktask *task; 75 74
+1 -2
drivers/w1/w1_netlink.c
··· 306 306 return error; 307 307 } 308 308 309 - static void w1_cn_callback(void *data) 309 + static void w1_cn_callback(struct cn_msg *msg) 310 310 { 311 - struct cn_msg *msg = data; 312 311 struct w1_netlink_msg *m = (struct w1_netlink_msg *)(msg + 1); 313 312 struct w1_netlink_cmd *cmd; 314 313 struct w1_slave *sl;
+3 -3
include/linux/connector.h
··· 136 136 void *ddata; 137 137 138 138 void *callback_priv; 139 - void (*callback) (void *); 139 + void (*callback) (struct cn_msg *); 140 140 141 141 void *free; 142 142 }; ··· 167 167 struct cn_queue_dev *cbdev; 168 168 }; 169 169 170 - int cn_add_callback(struct cb_id *, char *, void (*callback) (void *)); 170 + int cn_add_callback(struct cb_id *, char *, void (*callback) (struct cn_msg *)); 171 171 void cn_del_callback(struct cb_id *); 172 172 int cn_netlink_send(struct cn_msg *, u32, gfp_t); 173 173 174 - int cn_queue_add_callback(struct cn_queue_dev *dev, char *name, struct cb_id *id, void (*callback)(void *)); 174 + int cn_queue_add_callback(struct cn_queue_dev *dev, char *name, struct cb_id *id, void (*callback)(struct cn_msg *)); 175 175 void cn_queue_del_callback(struct cn_queue_dev *dev, struct cb_id *id); 176 176 177 177 int queue_cn_work(struct cn_callback_entry *cbq, struct work_struct *work);