Merge branch 'akpm' (Andrew's patch-bomb)
Merge misc patches from Andrew Morton: "Incoming: - lots of misc stuff - backlight tree updates - lib/ updates - Oleg's percpu-rwsem changes - checkpatch - rtc - aoe - more checkpoint/restart support I still have a pile of MM stuff pending - Pekka should be merging later today after which that is good to go. A number of other things are twiddling thumbs awaiting maintainer merges." * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (180 commits) scatterlist: don't BUG when we can trivially return a proper error. docs: update documentation about /proc/<pid>/fdinfo/<fd> fanotify output fs, fanotify: add @mflags field to fanotify output docs: add documentation about /proc/<pid>/fdinfo/<fd> output fs, notify: add procfs fdinfo helper fs, exportfs: add exportfs_encode_inode_fh() helper fs, exportfs: escape nil dereference if no s_export_op present fs, epoll: add procfs fdinfo helper fs, eventfd: add procfs fdinfo helper procfs: add ability to plug in auxiliary fdinfo providers tools/testing/selftests/kcmp/kcmp_test.c: print reason for failure in kcmp_test breakpoint selftests: print failure status instead of cause make error kcmp selftests: print fail status instead of cause make error kcmp selftests: make run_tests fix mem-hotplug selftests: print failure status instead of cause make error cpu-hotplug selftests: print failure status instead of cause make error mqueue selftests: print failure status instead of cause make error vm selftests: print failure status instead of cause make error ubifs: use prandom_bytes mtd: nandsim: use prandom_bytes ...
This commit is contained in:
@@ -58,6 +58,7 @@
|
||||
#include <linux/elf.h>
|
||||
#include <linux/gfp.h>
|
||||
#include <linux/migrate.h>
|
||||
#include <linux/string.h>
|
||||
|
||||
#include <asm/io.h>
|
||||
#include <asm/pgalloc.h>
|
||||
@@ -3590,6 +3591,7 @@ static int do_pmd_numa_page(struct mm_struct *mm, struct vm_area_struct *vma,
|
||||
unsigned long addr, pmd_t *pmdp)
|
||||
{
|
||||
BUG();
|
||||
return 0;
|
||||
}
|
||||
#endif /* CONFIG_NUMA_BALANCING */
|
||||
|
||||
@@ -4117,15 +4119,12 @@ void print_vma_addr(char *prefix, unsigned long ip)
|
||||
struct file *f = vma->vm_file;
|
||||
char *buf = (char *)__get_free_page(GFP_KERNEL);
|
||||
if (buf) {
|
||||
char *p, *s;
|
||||
char *p;
|
||||
|
||||
p = d_path(&f->f_path, buf, PAGE_SIZE);
|
||||
if (IS_ERR(p))
|
||||
p = "?";
|
||||
s = strrchr(p, '/');
|
||||
if (s)
|
||||
p = s+1;
|
||||
printk("%s%s[%lx+%lx]", prefix, p,
|
||||
printk("%s%s[%lx+%lx]", prefix, kbasename(p),
|
||||
vma->vm_start,
|
||||
vma->vm_end - vma->vm_start);
|
||||
free_page((unsigned long)buf);
|
||||
|
20
mm/shmem.c
20
mm/shmem.c
@@ -1719,7 +1719,7 @@ static ssize_t shmem_file_splice_read(struct file *in, loff_t *ppos,
|
||||
* llseek SEEK_DATA or SEEK_HOLE through the radix_tree.
|
||||
*/
|
||||
static pgoff_t shmem_seek_hole_data(struct address_space *mapping,
|
||||
pgoff_t index, pgoff_t end, int origin)
|
||||
pgoff_t index, pgoff_t end, int whence)
|
||||
{
|
||||
struct page *page;
|
||||
struct pagevec pvec;
|
||||
@@ -1733,13 +1733,13 @@ static pgoff_t shmem_seek_hole_data(struct address_space *mapping,
|
||||
pvec.nr = shmem_find_get_pages_and_swap(mapping, index,
|
||||
pvec.nr, pvec.pages, indices);
|
||||
if (!pvec.nr) {
|
||||
if (origin == SEEK_DATA)
|
||||
if (whence == SEEK_DATA)
|
||||
index = end;
|
||||
break;
|
||||
}
|
||||
for (i = 0; i < pvec.nr; i++, index++) {
|
||||
if (index < indices[i]) {
|
||||
if (origin == SEEK_HOLE) {
|
||||
if (whence == SEEK_HOLE) {
|
||||
done = true;
|
||||
break;
|
||||
}
|
||||
@@ -1751,8 +1751,8 @@ static pgoff_t shmem_seek_hole_data(struct address_space *mapping,
|
||||
page = NULL;
|
||||
}
|
||||
if (index >= end ||
|
||||
(page && origin == SEEK_DATA) ||
|
||||
(!page && origin == SEEK_HOLE)) {
|
||||
(page && whence == SEEK_DATA) ||
|
||||
(!page && whence == SEEK_HOLE)) {
|
||||
done = true;
|
||||
break;
|
||||
}
|
||||
@@ -1765,15 +1765,15 @@ static pgoff_t shmem_seek_hole_data(struct address_space *mapping,
|
||||
return index;
|
||||
}
|
||||
|
||||
static loff_t shmem_file_llseek(struct file *file, loff_t offset, int origin)
|
||||
static loff_t shmem_file_llseek(struct file *file, loff_t offset, int whence)
|
||||
{
|
||||
struct address_space *mapping = file->f_mapping;
|
||||
struct inode *inode = mapping->host;
|
||||
pgoff_t start, end;
|
||||
loff_t new_offset;
|
||||
|
||||
if (origin != SEEK_DATA && origin != SEEK_HOLE)
|
||||
return generic_file_llseek_size(file, offset, origin,
|
||||
if (whence != SEEK_DATA && whence != SEEK_HOLE)
|
||||
return generic_file_llseek_size(file, offset, whence,
|
||||
MAX_LFS_FILESIZE, i_size_read(inode));
|
||||
mutex_lock(&inode->i_mutex);
|
||||
/* We're holding i_mutex so we can access i_size directly */
|
||||
@@ -1785,12 +1785,12 @@ static loff_t shmem_file_llseek(struct file *file, loff_t offset, int origin)
|
||||
else {
|
||||
start = offset >> PAGE_CACHE_SHIFT;
|
||||
end = (inode->i_size + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;
|
||||
new_offset = shmem_seek_hole_data(mapping, start, end, origin);
|
||||
new_offset = shmem_seek_hole_data(mapping, start, end, whence);
|
||||
new_offset <<= PAGE_CACHE_SHIFT;
|
||||
if (new_offset > offset) {
|
||||
if (new_offset < inode->i_size)
|
||||
offset = new_offset;
|
||||
else if (origin == SEEK_DATA)
|
||||
else if (whence == SEEK_DATA)
|
||||
offset = -ENXIO;
|
||||
else
|
||||
offset = inode->i_size;
|
||||
|
Verwijs in nieuw issue
Block a user