kernel client
-- should O_DIRECT invalidate the page cache?
- inotify for updates from other clients?
- optional or no fill_trace?
- flock, fnctl locks
return ERR_PTR(rc);
}
+static void put_page_vector(struct page **pages, int num_pages)
+{
+ int i;
+
+ for (i = 0; i < num_pages; i++)
+ put_page(pages[i]);
+ kfree(pages);
+}
+
static void release_page_vector(struct page **pages, int num_pages)
{
int i;
}
if (file->f_flags & O_DIRECT)
- kfree(pages);
+ put_page_vector(pages, num_pages);
else
release_page_vector(pages, num_pages);
return ret;
out:
if (file->f_flags & O_DIRECT)
- kfree(pages);
+ put_page_vector(pages, num_pages);
else
release_page_vector(pages, num_pages);
return ret;