*** spurs_cmd.c.org 2009-09-10 10:28:51.000000000 +0900 --- spurs_cmd.c 2009-11-03 13:55:53.000000000 +0900 *************** *** 269,280 **** --- 269,286 ---- goto end_free_page; } + /* Initialize scatter list ( this is necessary after kernel 2.6.24 )*/ + /* Added by T.Nagai 2009/11/03 */ + sg_init_table(sgl,nr_pages); + /* Get pages for user memory */ down_read(¤t->mm->mmap_sem); + mapped_pages = get_user_pages(current, current->mm, user_buff_addr, nr_pages, (dma_direction == SPD_DMA_DIR_FROM_SPURS), 0, host_page, NULL); + up_read(¤t->mm->mmap_sem); if (mapped_pages < nr_pages) *************** *** 307,314 **** return sg_num; end_unmap_page: ! for (i = 0; i < mapped_pages; i++) page_cache_release(host_page[i]); ret = -EACCES; --- 313,321 ---- return sg_num; end_unmap_page: ! for (i = 0; i < mapped_pages; i++) { page_cache_release(host_page[i]); + } ret = -EACCES;