Skip to content

Commit

Permalink
Merge pull request #97 from torvalds/master
Browse files Browse the repository at this point in the history
Sync up with Linus
  • Loading branch information
dabrace committed Aug 27, 2015
2 parents f34ab22 + f9ed72d commit aaf7795
Show file tree
Hide file tree
Showing 6 changed files with 37 additions and 23 deletions.
1 change: 1 addition & 0 deletions MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -5849,6 +5849,7 @@ S: Odd Fixes

KERNEL NFSD, SUNRPC, AND LOCKD SERVERS
M: "J. Bruce Fields" <[email protected]>
M: Jeff Layton <[email protected]>
L: [email protected]
W: http://nfs.sourceforge.net/
S: Supported
Expand Down
14 changes: 7 additions & 7 deletions arch/x86/kernel/apic/apic.c
Original file line number Diff line number Diff line change
Expand Up @@ -1424,7 +1424,7 @@ static inline void __x2apic_disable(void)
{
u64 msr;

if (cpu_has_apic)
if (!cpu_has_apic)
return;

rdmsrl(MSR_IA32_APICBASE, msr);
Expand Down Expand Up @@ -1483,20 +1483,20 @@ void x2apic_setup(void)

static __init void x2apic_disable(void)
{
u32 x2apic_id;
u32 x2apic_id, state = x2apic_state;

if (x2apic_state != X2APIC_ON)
goto out;
x2apic_mode = 0;
x2apic_state = X2APIC_DISABLED;

if (state != X2APIC_ON)
return;

x2apic_id = read_apic_id();
if (x2apic_id >= 255)
panic("Cannot disable x2apic, id: %08x\n", x2apic_id);

__x2apic_disable();
register_lapic_address(mp_lapic_addr);
out:
x2apic_state = X2APIC_DISABLED;
x2apic_mode = 0;
}

static __init void x2apic_enable(void)
Expand Down
4 changes: 2 additions & 2 deletions drivers/acpi/nfit.c
Original file line number Diff line number Diff line change
Expand Up @@ -1024,15 +1024,15 @@ static void wmb_blk(struct nfit_blk *nfit_blk)
wmb_pmem();
}

static u64 read_blk_stat(struct nfit_blk *nfit_blk, unsigned int bw)
static u32 read_blk_stat(struct nfit_blk *nfit_blk, unsigned int bw)
{
struct nfit_blk_mmio *mmio = &nfit_blk->mmio[DCR];
u64 offset = nfit_blk->stat_offset + mmio->size * bw;

if (mmio->num_lines)
offset = to_interleave_offset(offset, mmio);

return readq(mmio->base + offset);
return readl(mmio->base + offset);
}

static void write_blk_ctl(struct nfit_blk *nfit_blk, unsigned int bw,
Expand Down
8 changes: 8 additions & 0 deletions drivers/block/mtip32xx/mtip32xx.c
Original file line number Diff line number Diff line change
Expand Up @@ -3756,6 +3756,14 @@ static int mtip_init_cmd(void *data, struct request *rq, unsigned int hctx_idx,
struct mtip_cmd *cmd = blk_mq_rq_to_pdu(rq);
u32 host_cap_64 = readl(dd->mmio + HOST_CAP) & HOST_CAP_64;

/*
* For flush requests, request_idx starts at the end of the
* tag space. Since we don't support FLUSH/FUA, simply return
* 0 as there's nothing to be done.
*/
if (request_idx >= MTIP_MAX_COMMAND_SLOTS)
return 0;

cmd->command = dmam_alloc_coherent(&dd->pdev->dev, CMD_DMA_ALLOC_SZ,
&cmd->command_dma, GFP_KERNEL);
if (!cmd->command)
Expand Down
22 changes: 13 additions & 9 deletions fs/fs-writeback.c
Original file line number Diff line number Diff line change
Expand Up @@ -844,14 +844,15 @@ static void bdi_split_work_to_wbs(struct backing_dev_info *bdi,
struct wb_iter iter;

might_sleep();

if (!bdi_has_dirty_io(bdi))
return;
restart:
rcu_read_lock();
bdi_for_each_wb(wb, bdi, &iter, next_blkcg_id) {
if (!wb_has_dirty_io(wb) ||
(skip_if_busy && writeback_in_progress(wb)))
/* SYNC_ALL writes out I_DIRTY_TIME too */
if (!wb_has_dirty_io(wb) &&
(base_work->sync_mode == WB_SYNC_NONE ||
list_empty(&wb->b_dirty_time)))
continue;
if (skip_if_busy && writeback_in_progress(wb))
continue;

base_work->nr_pages = wb_split_bdi_pages(wb, nr_pages);
Expand Down Expand Up @@ -899,8 +900,7 @@ static void bdi_split_work_to_wbs(struct backing_dev_info *bdi,
{
might_sleep();

if (bdi_has_dirty_io(bdi) &&
(!skip_if_busy || !writeback_in_progress(&bdi->wb))) {
if (!skip_if_busy || !writeback_in_progress(&bdi->wb)) {
base_work->auto_free = 0;
base_work->single_wait = 0;
base_work->single_done = 0;
Expand Down Expand Up @@ -2275,8 +2275,12 @@ void sync_inodes_sb(struct super_block *sb)
};
struct backing_dev_info *bdi = sb->s_bdi;

/* Nothing to do? */
if (!bdi_has_dirty_io(bdi) || bdi == &noop_backing_dev_info)
/*
* Can't skip on !bdi_has_dirty() because we should wait for !dirty
* inodes under writeback and I_DIRTY_TIME inodes ignored by
* bdi_has_dirty() need to be written out too.
*/
if (bdi == &noop_backing_dev_info)
return;
WARN_ON(!rwsem_is_locked(&sb->s_umount));

Expand Down
11 changes: 6 additions & 5 deletions security/security.c
Original file line number Diff line number Diff line change
Expand Up @@ -380,8 +380,8 @@ int security_inode_init_security(struct inode *inode, struct inode *dir,
return 0;

if (!initxattrs)
return call_int_hook(inode_init_security, 0, inode, dir, qstr,
NULL, NULL, NULL);
return call_int_hook(inode_init_security, -EOPNOTSUPP, inode,
dir, qstr, NULL, NULL, NULL);
memset(new_xattrs, 0, sizeof(new_xattrs));
lsm_xattr = new_xattrs;
ret = call_int_hook(inode_init_security, -EOPNOTSUPP, inode, dir, qstr,
Expand Down Expand Up @@ -409,8 +409,8 @@ int security_old_inode_init_security(struct inode *inode, struct inode *dir,
{
if (unlikely(IS_PRIVATE(inode)))
return -EOPNOTSUPP;
return call_int_hook(inode_init_security, 0, inode, dir, qstr,
name, value, len);
return call_int_hook(inode_init_security, -EOPNOTSUPP, inode, dir,
qstr, name, value, len);
}
EXPORT_SYMBOL(security_old_inode_init_security);

Expand Down Expand Up @@ -1281,7 +1281,8 @@ int security_socket_getpeersec_stream(struct socket *sock, char __user *optval,

int security_socket_getpeersec_dgram(struct socket *sock, struct sk_buff *skb, u32 *secid)
{
return call_int_hook(socket_getpeersec_dgram, 0, sock, skb, secid);
return call_int_hook(socket_getpeersec_dgram, -ENOPROTOOPT, sock,
skb, secid);
}
EXPORT_SYMBOL(security_socket_getpeersec_dgram);

Expand Down

0 comments on commit aaf7795

Please sign in to comment.