.. | .. |
---|
47 | 47 | size_t n = min_t(size_t, count, |
---|
48 | 48 | PAGE_SIZE - offset_in_page(pos)); |
---|
49 | 49 | struct page *page; |
---|
50 | | - void *addr; |
---|
51 | 50 | |
---|
52 | 51 | page = read_mapping_page(inode->i_mapping, pos >> PAGE_SHIFT, |
---|
53 | 52 | NULL); |
---|
54 | 53 | if (IS_ERR(page)) |
---|
55 | 54 | return PTR_ERR(page); |
---|
56 | 55 | |
---|
57 | | - addr = kmap_atomic(page); |
---|
58 | | - memcpy(buf, addr + offset_in_page(pos), n); |
---|
59 | | - kunmap_atomic(addr); |
---|
| 56 | + memcpy_from_page(buf, page, offset_in_page(pos), n); |
---|
60 | 57 | |
---|
61 | 58 | put_page(page); |
---|
62 | 59 | |
---|
.. | .. |
---|
81 | 78 | size_t n = min_t(size_t, count, |
---|
82 | 79 | PAGE_SIZE - offset_in_page(pos)); |
---|
83 | 80 | struct page *page; |
---|
84 | | - void *fsdata; |
---|
85 | | - void *addr; |
---|
| 81 | + void *fsdata = NULL; |
---|
86 | 82 | int res; |
---|
87 | 83 | |
---|
88 | 84 | res = pagecache_write_begin(NULL, inode->i_mapping, pos, n, 0, |
---|
.. | .. |
---|
90 | 86 | if (res) |
---|
91 | 87 | return res; |
---|
92 | 88 | |
---|
93 | | - addr = kmap_atomic(page); |
---|
94 | | - memcpy(addr + offset_in_page(pos), buf, n); |
---|
95 | | - kunmap_atomic(addr); |
---|
| 89 | + memcpy_to_page(page, offset_in_page(pos), buf, n); |
---|
96 | 90 | |
---|
97 | 91 | res = pagecache_write_end(NULL, inode->i_mapping, pos, n, n, |
---|
98 | 92 | page, fsdata); |
---|