aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb/dvb-core
diff options
context:
space:
mode:
authorJohannes Stezenbach <js@linuxtv.org>2005-05-17 00:54:39 -0400
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-05-17 10:59:33 -0400
commitfdc53a6dbfea18e621dd23ed5cfb160837d7ce52 (patch)
tree9ce191cdb07264f8c6275c1443e61b465e17d0cb /drivers/media/dvb/dvb-core
parent0b3f5a57bf110b519b706365c86ada199075f34e (diff)
[PATCH] dvb: modified dvb_register_adapter() to avoid kmalloc/kfree
Modified dvb_register_adapter() to avoid kmalloc/kfree. Drivers have to embed struct dvb_adapter into their private data struct from now on. (Andreas Oberritter) Signed-off-by: Johannes Stezenbach <js@linuxtv.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/media/dvb/dvb-core')
-rw-r--r--drivers/media/dvb/dvb-core/dvbdev.c9
-rw-r--r--drivers/media/dvb/dvb-core/dvbdev.h2
2 files changed, 2 insertions, 9 deletions
diff --git a/drivers/media/dvb/dvb-core/dvbdev.c b/drivers/media/dvb/dvb-core/dvbdev.c
index cf4ffe38fda3..9d9662f4b8e6 100644
--- a/drivers/media/dvb/dvb-core/dvbdev.c
+++ b/drivers/media/dvb/dvb-core/dvbdev.c
@@ -286,9 +286,8 @@ skip:
286} 286}
287 287
288 288
289int dvb_register_adapter(struct dvb_adapter **padap, const char *name, struct module *module) 289int dvb_register_adapter(struct dvb_adapter *adap, const char *name, struct module *module)
290{ 290{
291 struct dvb_adapter *adap;
292 int num; 291 int num;
293 292
294 if (down_interruptible (&dvbdev_register_lock)) 293 if (down_interruptible (&dvbdev_register_lock))
@@ -299,11 +298,6 @@ int dvb_register_adapter(struct dvb_adapter **padap, const char *name, struct mo
299 return -ENFILE; 298 return -ENFILE;
300 } 299 }
301 300
302 if (!(*padap = adap = kmalloc(sizeof(struct dvb_adapter), GFP_KERNEL))) {
303 up(&dvbdev_register_lock);
304 return -ENOMEM;
305 }
306
307 memset (adap, 0, sizeof(struct dvb_adapter)); 301 memset (adap, 0, sizeof(struct dvb_adapter));
308 INIT_LIST_HEAD (&adap->device_list); 302 INIT_LIST_HEAD (&adap->device_list);
309 303
@@ -331,7 +325,6 @@ int dvb_unregister_adapter(struct dvb_adapter *adap)
331 return -ERESTARTSYS; 325 return -ERESTARTSYS;
332 list_del (&adap->list_head); 326 list_del (&adap->list_head);
333 up (&dvbdev_register_lock); 327 up (&dvbdev_register_lock);
334 kfree (adap);
335 return 0; 328 return 0;
336} 329}
337EXPORT_SYMBOL(dvb_unregister_adapter); 330EXPORT_SYMBOL(dvb_unregister_adapter);
diff --git a/drivers/media/dvb/dvb-core/dvbdev.h b/drivers/media/dvb/dvb-core/dvbdev.h
index 184edba3caa7..a251867f30f1 100644
--- a/drivers/media/dvb/dvb-core/dvbdev.h
+++ b/drivers/media/dvb/dvb-core/dvbdev.h
@@ -76,7 +76,7 @@ struct dvb_device {
76}; 76};
77 77
78 78
79extern int dvb_register_adapter (struct dvb_adapter **padap, const char *name, struct module *module); 79extern int dvb_register_adapter (struct dvb_adapter *adap, const char *name, struct module *module);
80extern int dvb_unregister_adapter (struct dvb_adapter *adap); 80extern int dvb_unregister_adapter (struct dvb_adapter *adap);
81 81
82extern int dvb_register_device (struct dvb_adapter *adap, 82extern int dvb_register_device (struct dvb_adapter *adap,