Commit a10dceba authored by Sebastian Andrzej Siewior's avatar Sebastian Andrzej Siewior Committed by Linus Torvalds

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
1ec9c5dd ("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.deSigned-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
Cc: Anton Altaparmakov <anton@tuxera.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent bed95c43
...@@ -93,13 +93,11 @@ static void ntfs_end_buffer_async_read(struct buffer_head *bh, int uptodate) ...@@ -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) ...@@ -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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment