Skip to content

Commit 00236b0

Browse files
author
Alex Shi
committed
Merge branch 'linux-linaro-lsk-v4.4' into linux-linaro-lsk-v4.4-android
2 parents c6c9171 + d8e6d09 commit 00236b0

25 files changed

Lines changed: 146 additions & 53 deletions

File tree

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
VERSION = 4
22
PATCHLEVEL = 4
3-
SUBLEVEL = 100
3+
SUBLEVEL = 102
44
EXTRAVERSION =
55
NAME = Blurry Fish Butt
66

drivers/char/ipmi/ipmi_msghandler.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4029,7 +4029,8 @@ smi_from_recv_msg(ipmi_smi_t intf, struct ipmi_recv_msg *recv_msg,
40294029
}
40304030

40314031
static void check_msg_timeout(ipmi_smi_t intf, struct seq_table *ent,
4032-
struct list_head *timeouts, long timeout_period,
4032+
struct list_head *timeouts,
4033+
unsigned long timeout_period,
40334034
int slot, unsigned long *flags,
40344035
unsigned int *waiting_msgs)
40354036
{
@@ -4042,8 +4043,8 @@ static void check_msg_timeout(ipmi_smi_t intf, struct seq_table *ent,
40424043
if (!ent->inuse)
40434044
return;
40444045

4045-
ent->timeout -= timeout_period;
4046-
if (ent->timeout > 0) {
4046+
if (timeout_period < ent->timeout) {
4047+
ent->timeout -= timeout_period;
40474048
(*waiting_msgs)++;
40484049
return;
40494050
}
@@ -4109,7 +4110,8 @@ static void check_msg_timeout(ipmi_smi_t intf, struct seq_table *ent,
41094110
}
41104111
}
41114112

4112-
static unsigned int ipmi_timeout_handler(ipmi_smi_t intf, long timeout_period)
4113+
static unsigned int ipmi_timeout_handler(ipmi_smi_t intf,
4114+
unsigned long timeout_period)
41134115
{
41144116
struct list_head timeouts;
41154117
struct ipmi_recv_msg *msg, *msg2;

drivers/net/bonding/bond_main.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3166,7 +3166,7 @@ u32 bond_xmit_hash(struct bonding *bond, struct sk_buff *skb)
31663166
hash ^= (hash >> 16);
31673167
hash ^= (hash >> 8);
31683168

3169-
return hash;
3169+
return hash >> 1;
31703170
}
31713171

31723172
/*-------------------------- Device entry points ----------------------------*/

drivers/net/ethernet/fealnx.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -257,8 +257,8 @@ enum rx_desc_status_bits {
257257
RXFSD = 0x00000800, /* first descriptor */
258258
RXLSD = 0x00000400, /* last descriptor */
259259
ErrorSummary = 0x80, /* error summary */
260-
RUNT = 0x40, /* runt packet received */
261-
LONG = 0x20, /* long packet received */
260+
RUNTPKT = 0x40, /* runt packet received */
261+
LONGPKT = 0x20, /* long packet received */
262262
FAE = 0x10, /* frame align error */
263263
CRC = 0x08, /* crc error */
264264
RXER = 0x04, /* receive error */
@@ -1633,7 +1633,7 @@ static int netdev_rx(struct net_device *dev)
16331633
dev->name, rx_status);
16341634

16351635
dev->stats.rx_errors++; /* end of a packet. */
1636-
if (rx_status & (LONG | RUNT))
1636+
if (rx_status & (LONGPKT | RUNTPKT))
16371637
dev->stats.rx_length_errors++;
16381638
if (rx_status & RXER)
16391639
dev->stats.rx_frame_errors++;

drivers/nvme/host/pci.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -350,8 +350,8 @@ static void async_completion(struct nvme_queue *nvmeq, void *ctx,
350350
struct async_cmd_info *cmdinfo = ctx;
351351
cmdinfo->result = le32_to_cpup(&cqe->result);
352352
cmdinfo->status = le16_to_cpup(&cqe->status) >> 1;
353-
queue_kthread_work(cmdinfo->worker, &cmdinfo->work);
354353
blk_mq_free_request(cmdinfo->req);
354+
queue_kthread_work(cmdinfo->worker, &cmdinfo->work);
355355
}
356356

357357
static inline struct nvme_cmd_info *get_cmd_from_tag(struct nvme_queue *nvmeq,

drivers/tty/serial/omap-serial.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -693,7 +693,7 @@ static void serial_omap_set_mctrl(struct uart_port *port, unsigned int mctrl)
693693
if ((mctrl & TIOCM_RTS) && (port->status & UPSTAT_AUTORTS))
694694
up->efr |= UART_EFR_RTS;
695695
else
696-
up->efr &= UART_EFR_RTS;
696+
up->efr &= ~UART_EFR_RTS;
697697
serial_out(up, UART_EFR, up->efr);
698698
serial_out(up, UART_LCR, lcr);
699699

fs/coda/upcall.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -446,8 +446,7 @@ int venus_fsync(struct super_block *sb, struct CodaFid *fid)
446446
UPARG(CODA_FSYNC);
447447

448448
inp->coda_fsync.VFid = *fid;
449-
error = coda_upcall(coda_vcp(sb), sizeof(union inputArgs),
450-
&outsize, inp);
449+
error = coda_upcall(coda_vcp(sb), insize, &outsize, inp);
451450

452451
CODA_FREE(inp, insize);
453452
return error;

fs/ocfs2/file.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1166,6 +1166,13 @@ int ocfs2_setattr(struct dentry *dentry, struct iattr *attr)
11661166
}
11671167
size_change = S_ISREG(inode->i_mode) && attr->ia_valid & ATTR_SIZE;
11681168
if (size_change) {
1169+
/*
1170+
* Here we should wait dio to finish before inode lock
1171+
* to avoid a deadlock between ocfs2_setattr() and
1172+
* ocfs2_dio_end_io_write()
1173+
*/
1174+
inode_dio_wait(inode);
1175+
11691176
status = ocfs2_rw_lock(inode, 1);
11701177
if (status < 0) {
11711178
mlog_errno(status);
@@ -1186,8 +1193,6 @@ int ocfs2_setattr(struct dentry *dentry, struct iattr *attr)
11861193
if (status)
11871194
goto bail_unlock;
11881195

1189-
inode_dio_wait(inode);
1190-
11911196
if (i_size_read(inode) >= attr->ia_size) {
11921197
if (ocfs2_should_order_data(inode)) {
11931198
status = ocfs2_begin_ordered_truncate(inode,

include/linux/mmzone.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -690,7 +690,8 @@ typedef struct pglist_data {
690690
* is the first PFN that needs to be initialised.
691691
*/
692692
unsigned long first_deferred_pfn;
693-
unsigned long static_init_size;
693+
/* Number of non-deferred pages */
694+
unsigned long static_init_pgcnt;
694695
#endif /* CONFIG_DEFERRED_STRUCT_PAGE_INIT */
695696
} pg_data_t;
696697

include/linux/page_idle.h

Lines changed: 36 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,33 +46,62 @@ extern struct page_ext_operations page_idle_ops;
4646

4747
static inline bool page_is_young(struct page *page)
4848
{
49-
return test_bit(PAGE_EXT_YOUNG, &lookup_page_ext(page)->flags);
49+
struct page_ext *page_ext = lookup_page_ext(page);
50+
51+
if (unlikely(!page_ext))
52+
return false;
53+
54+
return test_bit(PAGE_EXT_YOUNG, &page_ext->flags);
5055
}
5156

5257
static inline void set_page_young(struct page *page)
5358
{
54-
set_bit(PAGE_EXT_YOUNG, &lookup_page_ext(page)->flags);
59+
struct page_ext *page_ext = lookup_page_ext(page);
60+
61+
if (unlikely(!page_ext))
62+
return;
63+
64+
set_bit(PAGE_EXT_YOUNG, &page_ext->flags);
5565
}
5666

5767
static inline bool test_and_clear_page_young(struct page *page)
5868
{
59-
return test_and_clear_bit(PAGE_EXT_YOUNG,
60-
&lookup_page_ext(page)->flags);
69+
struct page_ext *page_ext = lookup_page_ext(page);
70+
71+
if (unlikely(!page_ext))
72+
return false;
73+
74+
return test_and_clear_bit(PAGE_EXT_YOUNG, &page_ext->flags);
6175
}
6276

6377
static inline bool page_is_idle(struct page *page)
6478
{
65-
return test_bit(PAGE_EXT_IDLE, &lookup_page_ext(page)->flags);
79+
struct page_ext *page_ext = lookup_page_ext(page);
80+
81+
if (unlikely(!page_ext))
82+
return false;
83+
84+
return test_bit(PAGE_EXT_IDLE, &page_ext->flags);
6685
}
6786

6887
static inline void set_page_idle(struct page *page)
6988
{
70-
set_bit(PAGE_EXT_IDLE, &lookup_page_ext(page)->flags);
89+
struct page_ext *page_ext = lookup_page_ext(page);
90+
91+
if (unlikely(!page_ext))
92+
return;
93+
94+
set_bit(PAGE_EXT_IDLE, &page_ext->flags);
7195
}
7296

7397
static inline void clear_page_idle(struct page *page)
7498
{
75-
clear_bit(PAGE_EXT_IDLE, &lookup_page_ext(page)->flags);
99+
struct page_ext *page_ext = lookup_page_ext(page);
100+
101+
if (unlikely(!page_ext))
102+
return;
103+
104+
clear_bit(PAGE_EXT_IDLE, &page_ext->flags);
76105
}
77106
#endif /* CONFIG_64BIT */
78107

0 commit comments

Comments
 (0)