fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / sound / core / sgbuf.c
index 74745da..cefd228 100644 (file)
@@ -19,7 +19,6 @@
  *
  */
 
-#include <linux/config.h>
 #include <linux/slab.h>
 #include <linux/mm.h>
 #include <linux/vmalloc.h>
@@ -28,7 +27,7 @@
 
 /* table entries are align to 32 */
 #define SGBUF_TBL_ALIGN                32
-#define sgbuf_align_table(tbl) ((((tbl) + SGBUF_TBL_ALIGN - 1) / SGBUF_TBL_ALIGN) * SGBUF_TBL_ALIGN)
+#define sgbuf_align_table(tbl) ALIGN((tbl), SGBUF_TBL_ALIGN)
 
 int snd_free_sgbuf_pages(struct snd_dma_buffer *dmab)
 {
@@ -69,21 +68,18 @@ void *snd_malloc_sgbuf_pages(struct device *device,
 
        dmab->area = NULL;
        dmab->addr = 0;
-       dmab->private_data = sgbuf = kmalloc(sizeof(*sgbuf), GFP_KERNEL);
+       dmab->private_data = sgbuf = kzalloc(sizeof(*sgbuf), GFP_KERNEL);
        if (! sgbuf)
                return NULL;
-       memset(sgbuf, 0, sizeof(*sgbuf));
        sgbuf->dev = device;
        pages = snd_sgbuf_aligned_pages(size);
        sgbuf->tblsize = sgbuf_align_table(pages);
-       sgbuf->table = kmalloc(sizeof(*sgbuf->table) * sgbuf->tblsize, GFP_KERNEL);
+       sgbuf->table = kcalloc(sgbuf->tblsize, sizeof(*sgbuf->table), GFP_KERNEL);
        if (! sgbuf->table)
                goto _failed;
-       memset(sgbuf->table, 0, sizeof(*sgbuf->table) * sgbuf->tblsize);
-       sgbuf->page_table = kmalloc(sizeof(*sgbuf->page_table) * sgbuf->tblsize, GFP_KERNEL);
+       sgbuf->page_table = kcalloc(sgbuf->tblsize, sizeof(*sgbuf->page_table), GFP_KERNEL);
        if (! sgbuf->page_table)
                goto _failed;
-       memset(sgbuf->page_table, 0, sizeof(*sgbuf->page_table) * sgbuf->tblsize);
 
        /* allocate each page */
        for (i = 0; i < pages; i++) {