mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	fs/ntfs/aops.c: don't disable interrupts during kmap_atomic()
ntfs_end_buffer_async_read() disables interrupts around kmap_atomic().
This is a leftover from the old kmap_atomic() implementation which
relied on fixed mapping slots, so the caller had to make sure that the
same slot could not be reused from an interrupting context.
kmap_atomic() was changed to dynamic slots long ago and commit
1ec9c5ddc1 ("include/linux/highmem.h: remove the second argument of
k[un]map_atomic()") removed the slot assignements, but the callers were
not checked for now redundant interrupt disabling.
Remove the conditional interrupt disable.
Link: http://lkml.kernel.org/r/20180611144913.gln5mklhqcrfsoom@linutronix.de
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Cc: Anton Altaparmakov <anton@tuxera.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
			
			
This commit is contained in:
		
							parent
							
								
									bed95c43c1
								
							
						
					
					
						commit
						a10dcebacd
					
				
					 1 changed files with 0 additions and 4 deletions
				
			
		| 
						 | 
					@ -93,13 +93,11 @@ static void ntfs_end_buffer_async_read(struct buffer_head *bh, int uptodate)
 | 
				
			||||||
			ofs = 0;
 | 
								ofs = 0;
 | 
				
			||||||
			if (file_ofs < init_size)
 | 
								if (file_ofs < init_size)
 | 
				
			||||||
				ofs = init_size - file_ofs;
 | 
									ofs = init_size - file_ofs;
 | 
				
			||||||
			local_irq_save(flags);
 | 
					 | 
				
			||||||
			kaddr = kmap_atomic(page);
 | 
								kaddr = kmap_atomic(page);
 | 
				
			||||||
			memset(kaddr + bh_offset(bh) + ofs, 0,
 | 
								memset(kaddr + bh_offset(bh) + ofs, 0,
 | 
				
			||||||
					bh->b_size - ofs);
 | 
										bh->b_size - ofs);
 | 
				
			||||||
			flush_dcache_page(page);
 | 
								flush_dcache_page(page);
 | 
				
			||||||
			kunmap_atomic(kaddr);
 | 
								kunmap_atomic(kaddr);
 | 
				
			||||||
			local_irq_restore(flags);
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		clear_buffer_uptodate(bh);
 | 
							clear_buffer_uptodate(bh);
 | 
				
			||||||
| 
						 | 
					@ -146,13 +144,11 @@ static void ntfs_end_buffer_async_read(struct buffer_head *bh, int uptodate)
 | 
				
			||||||
		recs = PAGE_SIZE / rec_size;
 | 
							recs = PAGE_SIZE / rec_size;
 | 
				
			||||||
		/* Should have been verified before we got here... */
 | 
							/* Should have been verified before we got here... */
 | 
				
			||||||
		BUG_ON(!recs);
 | 
							BUG_ON(!recs);
 | 
				
			||||||
		local_irq_save(flags);
 | 
					 | 
				
			||||||
		kaddr = kmap_atomic(page);
 | 
							kaddr = kmap_atomic(page);
 | 
				
			||||||
		for (i = 0; i < recs; i++)
 | 
							for (i = 0; i < recs; i++)
 | 
				
			||||||
			post_read_mst_fixup((NTFS_RECORD*)(kaddr +
 | 
								post_read_mst_fixup((NTFS_RECORD*)(kaddr +
 | 
				
			||||||
					i * rec_size), rec_size);
 | 
										i * rec_size), rec_size);
 | 
				
			||||||
		kunmap_atomic(kaddr);
 | 
							kunmap_atomic(kaddr);
 | 
				
			||||||
		local_irq_restore(flags);
 | 
					 | 
				
			||||||
		flush_dcache_page(page);
 | 
							flush_dcache_page(page);
 | 
				
			||||||
		if (likely(page_uptodate && !PageError(page)))
 | 
							if (likely(page_uptodate && !PageError(page)))
 | 
				
			||||||
			SetPageUptodate(page);
 | 
								SetPageUptodate(page);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue