diff --git a/[refs] b/[refs] index 52569ba5b8f3..94c3852de109 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 38b7da09cfdb2202f08476d6fb22a47649a177ec +refs/heads/master: fb445ee5f9bfc7cbef9e397556170c608dc02955 diff --git a/trunk/drivers/serial/suncore.c b/trunk/drivers/serial/suncore.c index 707c5b03bce9..a2d4a19550ab 100644 --- a/trunk/drivers/serial/suncore.c +++ b/trunk/drivers/serial/suncore.c @@ -52,7 +52,7 @@ void sunserial_unregister_minors(struct uart_driver *drv, int count) } EXPORT_SYMBOL(sunserial_unregister_minors); -int __init sunserial_console_match(struct console *con, struct device_node *dp, +int sunserial_console_match(struct console *con, struct device_node *dp, struct uart_driver *drv, int line) { int off; diff --git a/trunk/kernel/printk.c b/trunk/kernel/printk.c index a30fe33de395..89011bf8c106 100644 --- a/trunk/kernel/printk.c +++ b/trunk/kernel/printk.c @@ -817,7 +817,7 @@ __setup("console=", console_setup); * commonly to provide a default console (ie from PROM variables) when * the user has not supplied one. */ -int __init add_preferred_console(char *name, int idx, char *options) +int add_preferred_console(char *name, int idx, char *options) { struct console_cmdline *c; int i; diff --git a/trunk/net/bluetooth/hci_conn.c b/trunk/net/bluetooth/hci_conn.c index 34d1a3c822bf..9483320f6dad 100644 --- a/trunk/net/bluetooth/hci_conn.c +++ b/trunk/net/bluetooth/hci_conn.c @@ -259,14 +259,22 @@ int hci_conn_del(struct hci_conn *conn) } tasklet_disable(&hdev->tx_task); + + hci_conn_del_sysfs(conn); + hci_conn_hash_del(hdev, conn); if (hdev->notify) hdev->notify(hdev, HCI_NOTIFY_CONN_DEL); + tasklet_enable(&hdev->tx_task); + skb_queue_purge(&conn->data_q); - hci_conn_del_sysfs(conn); + hci_dev_put(hdev); + /* will free via device release */ + put_device(&conn->dev); + return 0; } diff --git a/trunk/net/bluetooth/hci_sysfs.c b/trunk/net/bluetooth/hci_sysfs.c index cad510309dcf..cef1e3e1881c 100644 --- a/trunk/net/bluetooth/hci_sysfs.c +++ b/trunk/net/bluetooth/hci_sysfs.c @@ -320,7 +320,6 @@ static void del_conn(struct work_struct *work) { struct hci_conn *conn = container_of(work, struct hci_conn, work); device_del(&conn->dev); - put_device(&conn->dev); } void hci_conn_del_sysfs(struct hci_conn *conn) diff --git a/trunk/net/ipv4/ipconfig.c b/trunk/net/ipv4/ipconfig.c index 56a675734ea5..420f56ad59f8 100644 --- a/trunk/net/ipv4/ipconfig.c +++ b/trunk/net/ipv4/ipconfig.c @@ -1440,7 +1440,6 @@ static int __init ip_auto_config_setup(char *addrs) int num = 0; ic_set_manually = 1; - ic_enable = 1; if (ic_proto_name(addrs)) return 1; diff --git a/trunk/net/ipv4/tcp_input.c b/trunk/net/ipv4/tcp_input.c index b39f0d86e44c..889c89362bfc 100644 --- a/trunk/net/ipv4/tcp_input.c +++ b/trunk/net/ipv4/tcp_input.c @@ -2651,7 +2651,6 @@ static int tcp_clean_rtx_queue(struct sock *sk, s32 *seq_rtt_p, u32 cnt = 0; u32 reord = tp->packets_out; s32 seq_rtt = -1; - s32 ca_seq_rtt = -1; ktime_t last_ackt = net_invalid_timestamp(); while ((skb = tcp_write_queue_head(sk)) && skb != tcp_send_head(sk)) { @@ -2660,7 +2659,6 @@ static int tcp_clean_rtx_queue(struct sock *sk, s32 *seq_rtt_p, u32 packets_acked; u8 sacked = scb->sacked; - /* Determine how many packets and what bytes were acked, tso and else */ if (after(scb->end_seq, tp->snd_una)) { if (tcp_skb_pcount(skb) == 1 || !after(tp->snd_una, scb->seq)) @@ -2688,16 +2686,15 @@ static int tcp_clean_rtx_queue(struct sock *sk, s32 *seq_rtt_p, if (sacked & TCPCB_SACKED_RETRANS) tp->retrans_out -= packets_acked; flag |= FLAG_RETRANS_DATA_ACKED; - ca_seq_rtt = -1; seq_rtt = -1; if ((flag & FLAG_DATA_ACKED) || (packets_acked > 1)) flag |= FLAG_NONHEAD_RETRANS_ACKED; } else { - ca_seq_rtt = now - scb->when; - last_ackt = skb->tstamp; if (seq_rtt < 0) { - seq_rtt = ca_seq_rtt; + seq_rtt = now - scb->when; + if (fully_acked) + last_ackt = skb->tstamp; } if (!(sacked & TCPCB_SACKED_ACKED)) reord = min(cnt, reord); @@ -2712,10 +2709,10 @@ static int tcp_clean_rtx_queue(struct sock *sk, s32 *seq_rtt_p, !before(end_seq, tp->snd_up)) tp->urg_mode = 0; } else { - ca_seq_rtt = now - scb->when; - last_ackt = skb->tstamp; if (seq_rtt < 0) { - seq_rtt = ca_seq_rtt; + seq_rtt = now - scb->when; + if (fully_acked) + last_ackt = skb->tstamp; } reord = min(cnt, reord); } @@ -2775,8 +2772,8 @@ static int tcp_clean_rtx_queue(struct sock *sk, s32 *seq_rtt_p, net_invalid_timestamp())) rtt_us = ktime_us_delta(ktime_get_real(), last_ackt); - else if (ca_seq_rtt > 0) - rtt_us = jiffies_to_usecs(ca_seq_rtt); + else if (seq_rtt > 0) + rtt_us = jiffies_to_usecs(seq_rtt); } ca_ops->pkts_acked(sk, pkts_acked, rtt_us);