diff options
Diffstat (limited to 'drivers/base/firmware_loader/sysfs.c')
| -rw-r--r-- | drivers/base/firmware_loader/sysfs.c | 10 | 
1 files changed, 4 insertions, 6 deletions
diff --git a/drivers/base/firmware_loader/sysfs.c b/drivers/base/firmware_loader/sysfs.c index 5b0b85b70b6f..77bad32c481a 100644 --- a/drivers/base/firmware_loader/sysfs.c +++ b/drivers/base/firmware_loader/sysfs.c @@ -242,19 +242,17 @@ static void firmware_rw(struct fw_priv *fw_priv, char *buffer,  			loff_t offset, size_t count, bool read)  {  	while (count) { -		void *page_data;  		int page_nr = offset >> PAGE_SHIFT;  		int page_ofs = offset & (PAGE_SIZE - 1);  		int page_cnt = min_t(size_t, PAGE_SIZE - page_ofs, count); -		page_data = kmap(fw_priv->pages[page_nr]); -  		if (read) -			memcpy(buffer, page_data + page_ofs, page_cnt); +			memcpy_from_page(buffer, fw_priv->pages[page_nr], +					 page_ofs, page_cnt);  		else -			memcpy(page_data + page_ofs, buffer, page_cnt); +			memcpy_to_page(fw_priv->pages[page_nr], page_ofs, +				       buffer, page_cnt); -		kunmap(fw_priv->pages[page_nr]);  		buffer += page_cnt;  		offset += page_cnt;  		count -= page_cnt;  | 
