forked from mirrors/linux
		
	iov_iter: lift memzero_page() to highmem.h
Patch series "btrfs: Convert kmap/memset/kunmap to memzero_user()". Lifting memzero_user(), convert it to kmap_local_page() and then use it in btrfs. This patch (of 3): memzero_page() can replace the kmap/memset/kunmap pattern in other places in the code. While zero_user() has the same interface it is not the same call and its use should be limited and some of those calls may be better converted from zero_user() to memzero_page().[1] But that is not addressed in this series. Lift memzero_page() to highmem. [1] https://lore.kernel.org/lkml/CAHk-=wijdojzo56FzYqE5TOYw2Vws7ik3LEMGj9SPQaJJ+Z73Q@mail.gmail.com/ Link: https://lkml.kernel.org/r/20210309212137.2610186-1-ira.weiny@intel.com Link: https://lkml.kernel.org/r/20210309212137.2610186-2-ira.weiny@intel.com Signed-off-by: Ira Weiny <ira.weiny@intel.com> Cc: Alexander Viro <viro@zeniv.linux.org.uk> Cc: David Sterba <dsterba@suse.com> Cc: Chris Mason <clm@fb.com> Cc: Josef Bacik <josef@toxicpanda.com> Cc: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									ecfc2bda7a
								
							
						
					
					
						commit
						28961998f8
					
				
					 2 changed files with 8 additions and 7 deletions
				
			
		| 
						 | 
				
			
			@ -332,4 +332,11 @@ static inline void memcpy_to_page(struct page *page, size_t offset,
 | 
			
		|||
	kunmap_local(to);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline void memzero_page(struct page *page, size_t offset, size_t len)
 | 
			
		||||
{
 | 
			
		||||
	char *addr = kmap_atomic(page);
 | 
			
		||||
	memset(addr + offset, 0, len);
 | 
			
		||||
	kunmap_atomic(addr);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif /* _LINUX_HIGHMEM_H */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,6 +5,7 @@
 | 
			
		|||
#include <linux/fault-inject-usercopy.h>
 | 
			
		||||
#include <linux/uio.h>
 | 
			
		||||
#include <linux/pagemap.h>
 | 
			
		||||
#include <linux/highmem.h>
 | 
			
		||||
#include <linux/slab.h>
 | 
			
		||||
#include <linux/vmalloc.h>
 | 
			
		||||
#include <linux/splice.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -507,13 +508,6 @@ void iov_iter_init(struct iov_iter *i, unsigned int direction,
 | 
			
		|||
}
 | 
			
		||||
EXPORT_SYMBOL(iov_iter_init);
 | 
			
		||||
 | 
			
		||||
static void memzero_page(struct page *page, size_t offset, size_t len)
 | 
			
		||||
{
 | 
			
		||||
	char *addr = kmap_atomic(page);
 | 
			
		||||
	memset(addr + offset, 0, len);
 | 
			
		||||
	kunmap_atomic(addr);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline bool allocated(struct pipe_buffer *buf)
 | 
			
		||||
{
 | 
			
		||||
	return buf->ops == &default_pipe_buf_ops;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue