diff options
Diffstat (limited to 'net')
| -rw-r--r-- | net/ax25/af_ax25.c | 14 | ||||
| -rw-r--r-- | net/ax25/ax25_ds_subr.c | 8 | ||||
| -rw-r--r-- | net/ax25/ax25_ds_timer.c | 4 | ||||
| -rw-r--r-- | net/ax25/ax25_iface.c | 18 | ||||
| -rw-r--r-- | net/bluetooth/cmtp/capi.c | 4 | ||||
| -rw-r--r-- | net/bluetooth/cmtp/core.c | 3 | ||||
| -rw-r--r-- | net/bluetooth/hci_core.c | 7 | ||||
| -rw-r--r-- | net/bluetooth/hidp/Kconfig | 3 | ||||
| -rw-r--r-- | net/bluetooth/hidp/core.c | 3 | ||||
| -rw-r--r-- | net/bluetooth/l2cap.c | 18 | ||||
| -rw-r--r-- | net/bluetooth/rfcomm/core.c | 9 | ||||
| -rw-r--r-- | net/bluetooth/rfcomm/tty.c | 3 | ||||
| -rw-r--r-- | net/bluetooth/sco.c | 12 | ||||
| -rw-r--r-- | net/core/stream.c | 16 | ||||
| -rw-r--r-- | net/ipv4/fib_trie.c | 2 | ||||
| -rw-r--r-- | net/ipv4/ipcomp.c | 3 | ||||
| -rw-r--r-- | net/ipv4/tcp_highspeed.c | 13 | ||||
| -rw-r--r-- | net/ipv6/addrconf.c | 25 | ||||
| -rw-r--r-- | net/ipv6/ipcomp6.c | 3 | ||||
| -rw-r--r-- | net/netrom/af_netrom.c | 21 | ||||
| -rw-r--r-- | net/netrom/nr_timer.c | 2 | ||||
| -rw-r--r-- | net/rose/af_rose.c | 9 | ||||
| -rw-r--r-- | net/sched/act_api.c | 2 |
23 files changed, 116 insertions, 86 deletions
diff --git a/net/ax25/af_ax25.c b/net/ax25/af_ax25.c index f12be2acf9bc..000695c48583 100644 --- a/net/ax25/af_ax25.c +++ b/net/ax25/af_ax25.c | |||
| @@ -145,7 +145,7 @@ struct sock *ax25_find_listener(ax25_address *addr, int digi, | |||
| 145 | ax25_cb *s; | 145 | ax25_cb *s; |
| 146 | struct hlist_node *node; | 146 | struct hlist_node *node; |
| 147 | 147 | ||
| 148 | spin_lock_bh(&ax25_list_lock); | 148 | spin_lock(&ax25_list_lock); |
| 149 | ax25_for_each(s, node, &ax25_list) { | 149 | ax25_for_each(s, node, &ax25_list) { |
| 150 | if ((s->iamdigi && !digi) || (!s->iamdigi && digi)) | 150 | if ((s->iamdigi && !digi) || (!s->iamdigi && digi)) |
| 151 | continue; | 151 | continue; |
| @@ -154,12 +154,12 @@ struct sock *ax25_find_listener(ax25_address *addr, int digi, | |||
| 154 | /* If device is null we match any device */ | 154 | /* If device is null we match any device */ |
| 155 | if (s->ax25_dev == NULL || s->ax25_dev->dev == dev) { | 155 | if (s->ax25_dev == NULL || s->ax25_dev->dev == dev) { |
| 156 | sock_hold(s->sk); | 156 | sock_hold(s->sk); |
| 157 | spin_unlock_bh(&ax25_list_lock); | 157 | spin_unlock(&ax25_list_lock); |
| 158 | return s->sk; | 158 | return s->sk; |
| 159 | } | 159 | } |
| 160 | } | 160 | } |
| 161 | } | 161 | } |
| 162 | spin_unlock_bh(&ax25_list_lock); | 162 | spin_unlock(&ax25_list_lock); |
| 163 | 163 | ||
| 164 | return NULL; | 164 | return NULL; |
| 165 | } | 165 | } |
| @@ -174,7 +174,7 @@ struct sock *ax25_get_socket(ax25_address *my_addr, ax25_address *dest_addr, | |||
| 174 | ax25_cb *s; | 174 | ax25_cb *s; |
| 175 | struct hlist_node *node; | 175 | struct hlist_node *node; |
| 176 | 176 | ||
| 177 | spin_lock_bh(&ax25_list_lock); | 177 | spin_lock(&ax25_list_lock); |
| 178 | ax25_for_each(s, node, &ax25_list) { | 178 | ax25_for_each(s, node, &ax25_list) { |
| 179 | if (s->sk && !ax25cmp(&s->source_addr, my_addr) && | 179 | if (s->sk && !ax25cmp(&s->source_addr, my_addr) && |
| 180 | !ax25cmp(&s->dest_addr, dest_addr) && | 180 | !ax25cmp(&s->dest_addr, dest_addr) && |
| @@ -185,7 +185,7 @@ struct sock *ax25_get_socket(ax25_address *my_addr, ax25_address *dest_addr, | |||
| 185 | } | 185 | } |
| 186 | } | 186 | } |
| 187 | 187 | ||
| 188 | spin_unlock_bh(&ax25_list_lock); | 188 | spin_unlock(&ax25_list_lock); |
| 189 | 189 | ||
| 190 | return sk; | 190 | return sk; |
| 191 | } | 191 | } |
| @@ -235,7 +235,7 @@ void ax25_send_to_raw(ax25_address *addr, struct sk_buff *skb, int proto) | |||
| 235 | struct sk_buff *copy; | 235 | struct sk_buff *copy; |
| 236 | struct hlist_node *node; | 236 | struct hlist_node *node; |
| 237 | 237 | ||
| 238 | spin_lock_bh(&ax25_list_lock); | 238 | spin_lock(&ax25_list_lock); |
| 239 | ax25_for_each(s, node, &ax25_list) { | 239 | ax25_for_each(s, node, &ax25_list) { |
| 240 | if (s->sk != NULL && ax25cmp(&s->source_addr, addr) == 0 && | 240 | if (s->sk != NULL && ax25cmp(&s->source_addr, addr) == 0 && |
| 241 | s->sk->sk_type == SOCK_RAW && | 241 | s->sk->sk_type == SOCK_RAW && |
| @@ -248,7 +248,7 @@ void ax25_send_to_raw(ax25_address *addr, struct sk_buff *skb, int proto) | |||
| 248 | kfree_skb(copy); | 248 | kfree_skb(copy); |
| 249 | } | 249 | } |
| 250 | } | 250 | } |
| 251 | spin_unlock_bh(&ax25_list_lock); | 251 | spin_unlock(&ax25_list_lock); |
| 252 | } | 252 | } |
| 253 | 253 | ||
| 254 | /* | 254 | /* |
diff --git a/net/ax25/ax25_ds_subr.c b/net/ax25/ax25_ds_subr.c index 1d4ab641f82b..4d22d4430ec8 100644 --- a/net/ax25/ax25_ds_subr.c +++ b/net/ax25/ax25_ds_subr.c | |||
| @@ -80,7 +80,7 @@ void ax25_ds_enquiry_response(ax25_cb *ax25) | |||
| 80 | ax25_start_t3timer(ax25); | 80 | ax25_start_t3timer(ax25); |
| 81 | ax25_ds_set_timer(ax25->ax25_dev); | 81 | ax25_ds_set_timer(ax25->ax25_dev); |
| 82 | 82 | ||
| 83 | spin_lock_bh(&ax25_list_lock); | 83 | spin_lock(&ax25_list_lock); |
| 84 | ax25_for_each(ax25o, node, &ax25_list) { | 84 | ax25_for_each(ax25o, node, &ax25_list) { |
| 85 | if (ax25o == ax25) | 85 | if (ax25o == ax25) |
| 86 | continue; | 86 | continue; |
| @@ -106,7 +106,7 @@ void ax25_ds_enquiry_response(ax25_cb *ax25) | |||
| 106 | if (ax25o->state != AX25_STATE_0) | 106 | if (ax25o->state != AX25_STATE_0) |
| 107 | ax25_start_t3timer(ax25o); | 107 | ax25_start_t3timer(ax25o); |
| 108 | } | 108 | } |
| 109 | spin_unlock_bh(&ax25_list_lock); | 109 | spin_unlock(&ax25_list_lock); |
| 110 | } | 110 | } |
| 111 | 111 | ||
| 112 | void ax25_ds_establish_data_link(ax25_cb *ax25) | 112 | void ax25_ds_establish_data_link(ax25_cb *ax25) |
| @@ -162,13 +162,13 @@ static int ax25_check_dama_slave(ax25_dev *ax25_dev) | |||
| 162 | int res = 0; | 162 | int res = 0; |
| 163 | struct hlist_node *node; | 163 | struct hlist_node *node; |
| 164 | 164 | ||
| 165 | spin_lock_bh(&ax25_list_lock); | 165 | spin_lock(&ax25_list_lock); |
| 166 | ax25_for_each(ax25, node, &ax25_list) | 166 | ax25_for_each(ax25, node, &ax25_list) |
| 167 | if (ax25->ax25_dev == ax25_dev && (ax25->condition & AX25_COND_DAMA_MODE) && ax25->state > AX25_STATE_1) { | 167 | if (ax25->ax25_dev == ax25_dev && (ax25->condition & AX25_COND_DAMA_MODE) && ax25->state > AX25_STATE_1) { |
| 168 | res = 1; | 168 | res = 1; |
| 169 | break; | 169 | break; |
| 170 | } | 170 | } |
| 171 | spin_unlock_bh(&ax25_list_lock); | 171 | spin_unlock(&ax25_list_lock); |
| 172 | 172 | ||
| 173 | return res; | 173 | return res; |
| 174 | } | 174 | } |
diff --git a/net/ax25/ax25_ds_timer.c b/net/ax25/ax25_ds_timer.c index 5961459935eb..4f44185955c7 100644 --- a/net/ax25/ax25_ds_timer.c +++ b/net/ax25/ax25_ds_timer.c | |||
| @@ -85,7 +85,7 @@ static void ax25_ds_timeout(unsigned long arg) | |||
| 85 | return; | 85 | return; |
| 86 | } | 86 | } |
| 87 | 87 | ||
| 88 | spin_lock_bh(&ax25_list_lock); | 88 | spin_lock(&ax25_list_lock); |
| 89 | ax25_for_each(ax25, node, &ax25_list) { | 89 | ax25_for_each(ax25, node, &ax25_list) { |
| 90 | if (ax25->ax25_dev != ax25_dev || !(ax25->condition & AX25_COND_DAMA_MODE)) | 90 | if (ax25->ax25_dev != ax25_dev || !(ax25->condition & AX25_COND_DAMA_MODE)) |
| 91 | continue; | 91 | continue; |
| @@ -93,7 +93,7 @@ static void ax25_ds_timeout(unsigned long arg) | |||
| 93 | ax25_send_control(ax25, AX25_DISC, AX25_POLLON, AX25_COMMAND); | 93 | ax25_send_control(ax25, AX25_DISC, AX25_POLLON, AX25_COMMAND); |
| 94 | ax25_disconnect(ax25, ETIMEDOUT); | 94 | ax25_disconnect(ax25, ETIMEDOUT); |
| 95 | } | 95 | } |
| 96 | spin_unlock_bh(&ax25_list_lock); | 96 | spin_unlock(&ax25_list_lock); |
| 97 | 97 | ||
| 98 | ax25_dev_dama_off(ax25_dev); | 98 | ax25_dev_dama_off(ax25_dev); |
| 99 | } | 99 | } |
diff --git a/net/ax25/ax25_iface.c b/net/ax25/ax25_iface.c index 77ba07c67682..07ac0207eb69 100644 --- a/net/ax25/ax25_iface.c +++ b/net/ax25/ax25_iface.c | |||
| @@ -66,10 +66,10 @@ int ax25_protocol_register(unsigned int pid, | |||
| 66 | protocol->pid = pid; | 66 | protocol->pid = pid; |
| 67 | protocol->func = func; | 67 | protocol->func = func; |
| 68 | 68 | ||
| 69 | write_lock(&protocol_list_lock); | 69 | write_lock_bh(&protocol_list_lock); |
| 70 | protocol->next = protocol_list; | 70 | protocol->next = protocol_list; |
| 71 | protocol_list = protocol; | 71 | protocol_list = protocol; |
| 72 | write_unlock(&protocol_list_lock); | 72 | write_unlock_bh(&protocol_list_lock); |
| 73 | 73 | ||
| 74 | return 1; | 74 | return 1; |
| 75 | } | 75 | } |
| @@ -80,16 +80,16 @@ void ax25_protocol_release(unsigned int pid) | |||
| 80 | { | 80 | { |
| 81 | struct protocol_struct *s, *protocol; | 81 | struct protocol_struct *s, *protocol; |
| 82 | 82 | ||
| 83 | write_lock(&protocol_list_lock); | 83 | write_lock_bh(&protocol_list_lock); |
| 84 | protocol = protocol_list; | 84 | protocol = protocol_list; |
| 85 | if (protocol == NULL) { | 85 | if (protocol == NULL) { |
| 86 | write_unlock(&protocol_list_lock); | 86 | write_unlock_bh(&protocol_list_lock); |
| 87 | return; | 87 | return; |
| 88 | } | 88 | } |
| 89 | 89 | ||
| 90 | if (protocol->pid == pid) { | 90 | if (protocol->pid == pid) { |
| 91 | protocol_list = protocol->next; | 91 | protocol_list = protocol->next; |
| 92 | write_unlock(&protocol_list_lock); | 92 | write_unlock_bh(&protocol_list_lock); |
| 93 | kfree(protocol); | 93 | kfree(protocol); |
| 94 | return; | 94 | return; |
| 95 | } | 95 | } |
| @@ -98,14 +98,14 @@ void ax25_protocol_release(unsigned int pid) | |||
| 98 | if (protocol->next->pid == pid) { | 98 | if (protocol->next->pid == pid) { |
| 99 | s = protocol->next; | 99 | s = protocol->next; |
| 100 | protocol->next = protocol->next->next; | 100 | protocol->next = protocol->next->next; |
| 101 | write_unlock(&protocol_list_lock); | 101 | write_unlock_bh(&protocol_list_lock); |
| 102 | kfree(s); | 102 | kfree(s); |
| 103 | return; | 103 | return; |
| 104 | } | 104 | } |
| 105 | 105 | ||
| 106 | protocol = protocol->next; | 106 | protocol = protocol->next; |
| 107 | } | 107 | } |
| 108 | write_unlock(&protocol_list_lock); | 108 | write_unlock_bh(&protocol_list_lock); |
| 109 | } | 109 | } |
| 110 | 110 | ||
| 111 | EXPORT_SYMBOL(ax25_protocol_release); | 111 | EXPORT_SYMBOL(ax25_protocol_release); |
| @@ -266,13 +266,13 @@ int ax25_protocol_is_registered(unsigned int pid) | |||
| 266 | struct protocol_struct *protocol; | 266 | struct protocol_struct *protocol; |
| 267 | int res = 0; | 267 | int res = 0; |
| 268 | 268 | ||
| 269 | read_lock(&protocol_list_lock); | 269 | read_lock_bh(&protocol_list_lock); |
| 270 | for (protocol = protocol_list; protocol != NULL; protocol = protocol->next) | 270 | for (protocol = protocol_list; protocol != NULL; protocol = protocol->next) |
| 271 | if (protocol->pid == pid) { | 271 | if (protocol->pid == pid) { |
| 272 | res = 1; | 272 | res = 1; |
| 273 | break; | 273 | break; |
| 274 | } | 274 | } |
| 275 | read_unlock(&protocol_list_lock); | 275 | read_unlock_bh(&protocol_list_lock); |
| 276 | 276 | ||
| 277 | return res; | 277 | return res; |
| 278 | } | 278 | } |
diff --git a/net/bluetooth/cmtp/capi.c b/net/bluetooth/cmtp/capi.c index 6fb47e00e188..be04e9fb11f6 100644 --- a/net/bluetooth/cmtp/capi.c +++ b/net/bluetooth/cmtp/capi.c | |||
| @@ -75,15 +75,13 @@ | |||
| 75 | 75 | ||
| 76 | static struct cmtp_application *cmtp_application_add(struct cmtp_session *session, __u16 appl) | 76 | static struct cmtp_application *cmtp_application_add(struct cmtp_session *session, __u16 appl) |
| 77 | { | 77 | { |
| 78 | struct cmtp_application *app = kmalloc(sizeof(*app), GFP_KERNEL); | 78 | struct cmtp_application *app = kzalloc(sizeof(*app), GFP_KERNEL); |
| 79 | 79 | ||
| 80 | BT_DBG("session %p application %p appl %d", session, app, appl); | 80 | BT_DBG("session %p application %p appl %d", session, app, appl); |
| 81 | 81 | ||
| 82 | if (!app) | 82 | if (!app) |
| 83 | return NULL; | 83 | return NULL; |
| 84 | 84 | ||
| 85 | memset(app, 0, sizeof(*app)); | ||
| 86 | |||
| 87 | app->state = BT_OPEN; | 85 | app->state = BT_OPEN; |
| 88 | app->appl = appl; | 86 | app->appl = appl; |
| 89 | 87 | ||
diff --git a/net/bluetooth/cmtp/core.c b/net/bluetooth/cmtp/core.c index 182254a580e2..b81a01c64aea 100644 --- a/net/bluetooth/cmtp/core.c +++ b/net/bluetooth/cmtp/core.c | |||
| @@ -335,10 +335,9 @@ int cmtp_add_connection(struct cmtp_connadd_req *req, struct socket *sock) | |||
| 335 | baswap(&src, &bt_sk(sock->sk)->src); | 335 | baswap(&src, &bt_sk(sock->sk)->src); |
| 336 | baswap(&dst, &bt_sk(sock->sk)->dst); | 336 | baswap(&dst, &bt_sk(sock->sk)->dst); |
| 337 | 337 | ||
| 338 | session = kmalloc(sizeof(struct cmtp_session), GFP_KERNEL); | 338 | session = kzalloc(sizeof(struct cmtp_session), GFP_KERNEL); |
| 339 | if (!session) | 339 | if (!session) |
| 340 | return -ENOMEM; | 340 | return -ENOMEM; |
| 341 | memset(session, 0, sizeof(struct cmtp_session)); | ||
| 342 | 341 | ||
| 343 | down_write(&cmtp_session_sem); | 342 | down_write(&cmtp_session_sem); |
| 344 | 343 | ||
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c index 54e8e5ea2154..5ed474277903 100644 --- a/net/bluetooth/hci_core.c +++ b/net/bluetooth/hci_core.c | |||
| @@ -336,9 +336,8 @@ void hci_inquiry_cache_update(struct hci_dev *hdev, struct inquiry_data *data) | |||
| 336 | 336 | ||
| 337 | if (!(e = hci_inquiry_cache_lookup(hdev, &data->bdaddr))) { | 337 | if (!(e = hci_inquiry_cache_lookup(hdev, &data->bdaddr))) { |
| 338 | /* Entry not in the cache. Add new one. */ | 338 | /* Entry not in the cache. Add new one. */ |
| 339 | if (!(e = kmalloc(sizeof(struct inquiry_entry), GFP_ATOMIC))) | 339 | if (!(e = kzalloc(sizeof(struct inquiry_entry), GFP_ATOMIC))) |
| 340 | return; | 340 | return; |
| 341 | memset(e, 0, sizeof(struct inquiry_entry)); | ||
| 342 | e->next = cache->list; | 341 | e->next = cache->list; |
| 343 | cache->list = e; | 342 | cache->list = e; |
| 344 | } | 343 | } |
| @@ -800,12 +799,10 @@ struct hci_dev *hci_alloc_dev(void) | |||
| 800 | { | 799 | { |
| 801 | struct hci_dev *hdev; | 800 | struct hci_dev *hdev; |
| 802 | 801 | ||
| 803 | hdev = kmalloc(sizeof(struct hci_dev), GFP_KERNEL); | 802 | hdev = kzalloc(sizeof(struct hci_dev), GFP_KERNEL); |
| 804 | if (!hdev) | 803 | if (!hdev) |
| 805 | return NULL; | 804 | return NULL; |
| 806 | 805 | ||
| 807 | memset(hdev, 0, sizeof(struct hci_dev)); | ||
| 808 | |||
| 809 | skb_queue_head_init(&hdev->driver_init); | 806 | skb_queue_head_init(&hdev->driver_init); |
| 810 | 807 | ||
| 811 | return hdev; | 808 | return hdev; |
diff --git a/net/bluetooth/hidp/Kconfig b/net/bluetooth/hidp/Kconfig index edfea772fb67..c6abf2a5a932 100644 --- a/net/bluetooth/hidp/Kconfig +++ b/net/bluetooth/hidp/Kconfig | |||
| @@ -1,7 +1,6 @@ | |||
| 1 | config BT_HIDP | 1 | config BT_HIDP |
| 2 | tristate "HIDP protocol support" | 2 | tristate "HIDP protocol support" |
| 3 | depends on BT && BT_L2CAP && (BROKEN || !S390) | 3 | depends on BT && BT_L2CAP && INPUT |
| 4 | select INPUT | ||
| 5 | help | 4 | help |
| 6 | HIDP (Human Interface Device Protocol) is a transport layer | 5 | HIDP (Human Interface Device Protocol) is a transport layer |
| 7 | for HID reports. HIDP is required for the Bluetooth Human | 6 | for HID reports. HIDP is required for the Bluetooth Human |
diff --git a/net/bluetooth/hidp/core.c b/net/bluetooth/hidp/core.c index b9c24a55425c..c6e3a2c27c6e 100644 --- a/net/bluetooth/hidp/core.c +++ b/net/bluetooth/hidp/core.c | |||
| @@ -582,10 +582,9 @@ int hidp_add_connection(struct hidp_connadd_req *req, struct socket *ctrl_sock, | |||
| 582 | bacmp(&bt_sk(ctrl_sock->sk)->dst, &bt_sk(intr_sock->sk)->dst)) | 582 | bacmp(&bt_sk(ctrl_sock->sk)->dst, &bt_sk(intr_sock->sk)->dst)) |
| 583 | return -ENOTUNIQ; | 583 | return -ENOTUNIQ; |
| 584 | 584 | ||
| 585 | session = kmalloc(sizeof(struct hidp_session), GFP_KERNEL); | 585 | session = kzalloc(sizeof(struct hidp_session), GFP_KERNEL); |
| 586 | if (!session) | 586 | if (!session) |
| 587 | return -ENOMEM; | 587 | return -ENOMEM; |
| 588 | memset(session, 0, sizeof(struct hidp_session)); | ||
| 589 | 588 | ||
| 590 | session->input = input_allocate_device(); | 589 | session->input = input_allocate_device(); |
| 591 | if (!session->input) { | 590 | if (!session->input) { |
diff --git a/net/bluetooth/l2cap.c b/net/bluetooth/l2cap.c index eaaad658d11d..d56f60b392ac 100644 --- a/net/bluetooth/l2cap.c +++ b/net/bluetooth/l2cap.c | |||
| @@ -185,7 +185,7 @@ static inline void l2cap_chan_unlink(struct l2cap_chan_list *l, struct sock *sk) | |||
| 185 | { | 185 | { |
| 186 | struct sock *next = l2cap_pi(sk)->next_c, *prev = l2cap_pi(sk)->prev_c; | 186 | struct sock *next = l2cap_pi(sk)->next_c, *prev = l2cap_pi(sk)->prev_c; |
| 187 | 187 | ||
| 188 | write_lock(&l->lock); | 188 | write_lock_bh(&l->lock); |
| 189 | if (sk == l->head) | 189 | if (sk == l->head) |
| 190 | l->head = next; | 190 | l->head = next; |
| 191 | 191 | ||
| @@ -193,7 +193,7 @@ static inline void l2cap_chan_unlink(struct l2cap_chan_list *l, struct sock *sk) | |||
| 193 | l2cap_pi(next)->prev_c = prev; | 193 | l2cap_pi(next)->prev_c = prev; |
| 194 | if (prev) | 194 | if (prev) |
| 195 | l2cap_pi(prev)->next_c = next; | 195 | l2cap_pi(prev)->next_c = next; |
| 196 | write_unlock(&l->lock); | 196 | write_unlock_bh(&l->lock); |
| 197 | 197 | ||
| 198 | __sock_put(sk); | 198 | __sock_put(sk); |
| 199 | } | 199 | } |
| @@ -313,9 +313,9 @@ static void l2cap_conn_del(struct hci_conn *hcon, int err) | |||
| 313 | static inline void l2cap_chan_add(struct l2cap_conn *conn, struct sock *sk, struct sock *parent) | 313 | static inline void l2cap_chan_add(struct l2cap_conn *conn, struct sock *sk, struct sock *parent) |
| 314 | { | 314 | { |
| 315 | struct l2cap_chan_list *l = &conn->chan_list; | 315 | struct l2cap_chan_list *l = &conn->chan_list; |
| 316 | write_lock(&l->lock); | 316 | write_lock_bh(&l->lock); |
| 317 | __l2cap_chan_add(conn, sk, parent); | 317 | __l2cap_chan_add(conn, sk, parent); |
| 318 | write_unlock(&l->lock); | 318 | write_unlock_bh(&l->lock); |
| 319 | } | 319 | } |
| 320 | 320 | ||
| 321 | static inline u8 l2cap_get_ident(struct l2cap_conn *conn) | 321 | static inline u8 l2cap_get_ident(struct l2cap_conn *conn) |
| @@ -328,14 +328,14 @@ static inline u8 l2cap_get_ident(struct l2cap_conn *conn) | |||
| 328 | * 200 - 254 are used by utilities like l2ping, etc. | 328 | * 200 - 254 are used by utilities like l2ping, etc. |
| 329 | */ | 329 | */ |
| 330 | 330 | ||
| 331 | spin_lock(&conn->lock); | 331 | spin_lock_bh(&conn->lock); |
| 332 | 332 | ||
| 333 | if (++conn->tx_ident > 128) | 333 | if (++conn->tx_ident > 128) |
| 334 | conn->tx_ident = 1; | 334 | conn->tx_ident = 1; |
| 335 | 335 | ||
| 336 | id = conn->tx_ident; | 336 | id = conn->tx_ident; |
| 337 | 337 | ||
| 338 | spin_unlock(&conn->lock); | 338 | spin_unlock_bh(&conn->lock); |
| 339 | 339 | ||
| 340 | return id; | 340 | return id; |
| 341 | } | 341 | } |
| @@ -1416,11 +1416,11 @@ static inline int l2cap_connect_req(struct l2cap_conn *conn, struct l2cap_cmd_hd | |||
| 1416 | if (!sk) | 1416 | if (!sk) |
| 1417 | goto response; | 1417 | goto response; |
| 1418 | 1418 | ||
| 1419 | write_lock(&list->lock); | 1419 | write_lock_bh(&list->lock); |
| 1420 | 1420 | ||
| 1421 | /* Check if we already have channel with that dcid */ | 1421 | /* Check if we already have channel with that dcid */ |
| 1422 | if (__l2cap_get_chan_by_dcid(list, scid)) { | 1422 | if (__l2cap_get_chan_by_dcid(list, scid)) { |
| 1423 | write_unlock(&list->lock); | 1423 | write_unlock_bh(&list->lock); |
| 1424 | sock_set_flag(sk, SOCK_ZAPPED); | 1424 | sock_set_flag(sk, SOCK_ZAPPED); |
| 1425 | l2cap_sock_kill(sk); | 1425 | l2cap_sock_kill(sk); |
| 1426 | goto response; | 1426 | goto response; |
| @@ -1458,7 +1458,7 @@ static inline int l2cap_connect_req(struct l2cap_conn *conn, struct l2cap_cmd_hd | |||
| 1458 | result = status = 0; | 1458 | result = status = 0; |
| 1459 | 1459 | ||
| 1460 | done: | 1460 | done: |
| 1461 | write_unlock(&list->lock); | 1461 | write_unlock_bh(&list->lock); |
| 1462 | 1462 | ||
| 1463 | response: | 1463 | response: |
| 1464 | bh_unlock_sock(parent); | 1464 | bh_unlock_sock(parent); |
diff --git a/net/bluetooth/rfcomm/core.c b/net/bluetooth/rfcomm/core.c index 155a2b93760e..77eab8f4c7fd 100644 --- a/net/bluetooth/rfcomm/core.c +++ b/net/bluetooth/rfcomm/core.c | |||
| @@ -273,10 +273,10 @@ static void rfcomm_dlc_clear_state(struct rfcomm_dlc *d) | |||
| 273 | 273 | ||
| 274 | struct rfcomm_dlc *rfcomm_dlc_alloc(gfp_t prio) | 274 | struct rfcomm_dlc *rfcomm_dlc_alloc(gfp_t prio) |
| 275 | { | 275 | { |
| 276 | struct rfcomm_dlc *d = kmalloc(sizeof(*d), prio); | 276 | struct rfcomm_dlc *d = kzalloc(sizeof(*d), prio); |
| 277 | |||
| 277 | if (!d) | 278 | if (!d) |
| 278 | return NULL; | 279 | return NULL; |
| 279 | memset(d, 0, sizeof(*d)); | ||
| 280 | 280 | ||
| 281 | init_timer(&d->timer); | 281 | init_timer(&d->timer); |
| 282 | d->timer.function = rfcomm_dlc_timeout; | 282 | d->timer.function = rfcomm_dlc_timeout; |
| @@ -289,6 +289,7 @@ struct rfcomm_dlc *rfcomm_dlc_alloc(gfp_t prio) | |||
| 289 | rfcomm_dlc_clear_state(d); | 289 | rfcomm_dlc_clear_state(d); |
| 290 | 290 | ||
| 291 | BT_DBG("%p", d); | 291 | BT_DBG("%p", d); |
| 292 | |||
| 292 | return d; | 293 | return d; |
| 293 | } | 294 | } |
| 294 | 295 | ||
| @@ -522,10 +523,10 @@ int rfcomm_dlc_get_modem_status(struct rfcomm_dlc *d, u8 *v24_sig) | |||
| 522 | /* ---- RFCOMM sessions ---- */ | 523 | /* ---- RFCOMM sessions ---- */ |
| 523 | static struct rfcomm_session *rfcomm_session_add(struct socket *sock, int state) | 524 | static struct rfcomm_session *rfcomm_session_add(struct socket *sock, int state) |
| 524 | { | 525 | { |
| 525 | struct rfcomm_session *s = kmalloc(sizeof(*s), GFP_KERNEL); | 526 | struct rfcomm_session *s = kzalloc(sizeof(*s), GFP_KERNEL); |
| 527 | |||
| 526 | if (!s) | 528 | if (!s) |
| 527 | return NULL; | 529 | return NULL; |
| 528 | memset(s, 0, sizeof(*s)); | ||
| 529 | 530 | ||
| 530 | BT_DBG("session %p sock %p", s, sock); | 531 | BT_DBG("session %p sock %p", s, sock); |
| 531 | 532 | ||
diff --git a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c index 2ff2d5b87c93..bd8d671a0ba6 100644 --- a/net/bluetooth/rfcomm/tty.c +++ b/net/bluetooth/rfcomm/tty.c | |||
| @@ -169,10 +169,9 @@ static int rfcomm_dev_add(struct rfcomm_dev_req *req, struct rfcomm_dlc *dlc) | |||
| 169 | 169 | ||
| 170 | BT_DBG("id %d channel %d", req->dev_id, req->channel); | 170 | BT_DBG("id %d channel %d", req->dev_id, req->channel); |
| 171 | 171 | ||
| 172 | dev = kmalloc(sizeof(struct rfcomm_dev), GFP_KERNEL); | 172 | dev = kzalloc(sizeof(struct rfcomm_dev), GFP_KERNEL); |
| 173 | if (!dev) | 173 | if (!dev) |
| 174 | return -ENOMEM; | 174 | return -ENOMEM; |
| 175 | memset(dev, 0, sizeof(struct rfcomm_dev)); | ||
| 176 | 175 | ||
| 177 | write_lock_bh(&rfcomm_dev_lock); | 176 | write_lock_bh(&rfcomm_dev_lock); |
| 178 | 177 | ||
diff --git a/net/bluetooth/sco.c b/net/bluetooth/sco.c index 85defccc0287..7714a2ec3854 100644 --- a/net/bluetooth/sco.c +++ b/net/bluetooth/sco.c | |||
| @@ -108,17 +108,14 @@ static void sco_sock_init_timer(struct sock *sk) | |||
| 108 | static struct sco_conn *sco_conn_add(struct hci_conn *hcon, __u8 status) | 108 | static struct sco_conn *sco_conn_add(struct hci_conn *hcon, __u8 status) |
| 109 | { | 109 | { |
| 110 | struct hci_dev *hdev = hcon->hdev; | 110 | struct hci_dev *hdev = hcon->hdev; |
| 111 | struct sco_conn *conn; | 111 | struct sco_conn *conn = hcon->sco_data; |
| 112 | |||
| 113 | if ((conn = hcon->sco_data)) | ||
| 114 | return conn; | ||
| 115 | 112 | ||
| 116 | if (status) | 113 | if (conn || status) |
| 117 | return conn; | 114 | return conn; |
| 118 | 115 | ||
| 119 | if (!(conn = kmalloc(sizeof(struct sco_conn), GFP_ATOMIC))) | 116 | conn = kzalloc(sizeof(struct sco_conn), GFP_ATOMIC); |
| 117 | if (!conn) | ||
| 120 | return NULL; | 118 | return NULL; |
| 121 | memset(conn, 0, sizeof(struct sco_conn)); | ||
| 122 | 119 | ||
| 123 | spin_lock_init(&conn->lock); | 120 | spin_lock_init(&conn->lock); |
| 124 | 121 | ||
| @@ -134,6 +131,7 @@ static struct sco_conn *sco_conn_add(struct hci_conn *hcon, __u8 status) | |||
| 134 | conn->mtu = 60; | 131 | conn->mtu = 60; |
| 135 | 132 | ||
| 136 | BT_DBG("hcon %p conn %p", hcon, conn); | 133 | BT_DBG("hcon %p conn %p", hcon, conn); |
| 134 | |||
| 137 | return conn; | 135 | return conn; |
| 138 | } | 136 | } |
| 139 | 137 | ||
diff --git a/net/core/stream.c b/net/core/stream.c index e9489696f694..d1d7decf70b0 100644 --- a/net/core/stream.c +++ b/net/core/stream.c | |||
| @@ -196,15 +196,13 @@ EXPORT_SYMBOL(sk_stream_error); | |||
| 196 | 196 | ||
| 197 | void __sk_stream_mem_reclaim(struct sock *sk) | 197 | void __sk_stream_mem_reclaim(struct sock *sk) |
| 198 | { | 198 | { |
| 199 | if (sk->sk_forward_alloc >= SK_STREAM_MEM_QUANTUM) { | 199 | atomic_sub(sk->sk_forward_alloc / SK_STREAM_MEM_QUANTUM, |
| 200 | atomic_sub(sk->sk_forward_alloc / SK_STREAM_MEM_QUANTUM, | 200 | sk->sk_prot->memory_allocated); |
| 201 | sk->sk_prot->memory_allocated); | 201 | sk->sk_forward_alloc &= SK_STREAM_MEM_QUANTUM - 1; |
| 202 | sk->sk_forward_alloc &= SK_STREAM_MEM_QUANTUM - 1; | 202 | if (*sk->sk_prot->memory_pressure && |
| 203 | if (*sk->sk_prot->memory_pressure && | 203 | (atomic_read(sk->sk_prot->memory_allocated) < |
| 204 | (atomic_read(sk->sk_prot->memory_allocated) < | 204 | sk->sk_prot->sysctl_mem[0])) |
| 205 | sk->sk_prot->sysctl_mem[0])) | 205 | *sk->sk_prot->memory_pressure = 0; |
| 206 | *sk->sk_prot->memory_pressure = 0; | ||
| 207 | } | ||
| 208 | } | 206 | } |
| 209 | 207 | ||
| 210 | EXPORT_SYMBOL(__sk_stream_mem_reclaim); | 208 | EXPORT_SYMBOL(__sk_stream_mem_reclaim); |
diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c index 1cb65305e102..23fb9d9768e3 100644 --- a/net/ipv4/fib_trie.c +++ b/net/ipv4/fib_trie.c | |||
| @@ -1252,8 +1252,8 @@ fn_trie_insert(struct fib_table *tb, struct rtmsg *r, struct kern_rta *rta, | |||
| 1252 | */ | 1252 | */ |
| 1253 | 1253 | ||
| 1254 | if (!fa_head) { | 1254 | if (!fa_head) { |
| 1255 | fa_head = fib_insert_node(t, &err, key, plen); | ||
| 1256 | err = 0; | 1255 | err = 0; |
| 1256 | fa_head = fib_insert_node(t, &err, key, plen); | ||
| 1257 | if (err) | 1257 | if (err) |
| 1258 | goto out_free_new_fa; | 1258 | goto out_free_new_fa; |
| 1259 | } | 1259 | } |
diff --git a/net/ipv4/ipcomp.c b/net/ipv4/ipcomp.c index 8e0374847532..8a8b5cf2f7fe 100644 --- a/net/ipv4/ipcomp.c +++ b/net/ipv4/ipcomp.c | |||
| @@ -70,7 +70,8 @@ static int ipcomp_decompress(struct xfrm_state *x, struct sk_buff *skb) | |||
| 70 | if (err) | 70 | if (err) |
| 71 | goto out; | 71 | goto out; |
| 72 | 72 | ||
| 73 | skb_put(skb, dlen - plen); | 73 | skb->truesize += dlen - plen; |
| 74 | __skb_put(skb, dlen - plen); | ||
| 74 | memcpy(skb->data, scratch, dlen); | 75 | memcpy(skb->data, scratch, dlen); |
| 75 | out: | 76 | out: |
| 76 | put_cpu(); | 77 | put_cpu(); |
diff --git a/net/ipv4/tcp_highspeed.c b/net/ipv4/tcp_highspeed.c index aaa1538c0692..fa3e1aad660c 100644 --- a/net/ipv4/tcp_highspeed.c +++ b/net/ipv4/tcp_highspeed.c | |||
| @@ -139,14 +139,19 @@ static void hstcp_cong_avoid(struct sock *sk, u32 adk, u32 rtt, | |||
| 139 | tp->snd_cwnd++; | 139 | tp->snd_cwnd++; |
| 140 | } | 140 | } |
| 141 | } else { | 141 | } else { |
| 142 | /* Update AIMD parameters */ | 142 | /* Update AIMD parameters. |
| 143 | * | ||
| 144 | * We want to guarantee that: | ||
| 145 | * hstcp_aimd_vals[ca->ai-1].cwnd < | ||
| 146 | * snd_cwnd <= | ||
| 147 | * hstcp_aimd_vals[ca->ai].cwnd | ||
| 148 | */ | ||
| 143 | if (tp->snd_cwnd > hstcp_aimd_vals[ca->ai].cwnd) { | 149 | if (tp->snd_cwnd > hstcp_aimd_vals[ca->ai].cwnd) { |
| 144 | while (tp->snd_cwnd > hstcp_aimd_vals[ca->ai].cwnd && | 150 | while (tp->snd_cwnd > hstcp_aimd_vals[ca->ai].cwnd && |
| 145 | ca->ai < HSTCP_AIMD_MAX - 1) | 151 | ca->ai < HSTCP_AIMD_MAX - 1) |
| 146 | ca->ai++; | 152 | ca->ai++; |
| 147 | } else if (tp->snd_cwnd < hstcp_aimd_vals[ca->ai].cwnd) { | 153 | } else if (ca->ai && tp->snd_cwnd <= hstcp_aimd_vals[ca->ai-1].cwnd) { |
| 148 | while (tp->snd_cwnd > hstcp_aimd_vals[ca->ai].cwnd && | 154 | while (ca->ai && tp->snd_cwnd <= hstcp_aimd_vals[ca->ai-1].cwnd) |
| 149 | ca->ai > 0) | ||
| 150 | ca->ai--; | 155 | ca->ai--; |
| 151 | } | 156 | } |
| 152 | 157 | ||
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index c250d0af10d7..2316a4315a18 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c | |||
| @@ -508,6 +508,26 @@ void inet6_ifa_finish_destroy(struct inet6_ifaddr *ifp) | |||
| 508 | kfree(ifp); | 508 | kfree(ifp); |
| 509 | } | 509 | } |
| 510 | 510 | ||
| 511 | static void | ||
| 512 | ipv6_link_dev_addr(struct inet6_dev *idev, struct inet6_ifaddr *ifp) | ||
| 513 | { | ||
| 514 | struct inet6_ifaddr *ifa, **ifap; | ||
| 515 | int ifp_scope = ipv6_addr_src_scope(&ifp->addr); | ||
| 516 | |||
| 517 | /* | ||
| 518 | * Each device address list is sorted in order of scope - | ||
| 519 | * global before linklocal. | ||
| 520 | */ | ||
| 521 | for (ifap = &idev->addr_list; (ifa = *ifap) != NULL; | ||
| 522 | ifap = &ifa->if_next) { | ||
| 523 | if (ifp_scope >= ipv6_addr_src_scope(&ifa->addr)) | ||
| 524 | break; | ||
| 525 | } | ||
| 526 | |||
| 527 | ifp->if_next = *ifap; | ||
| 528 | *ifap = ifp; | ||
| 529 | } | ||
| 530 | |||
| 511 | /* On success it returns ifp with increased reference count */ | 531 | /* On success it returns ifp with increased reference count */ |
| 512 | 532 | ||
| 513 | static struct inet6_ifaddr * | 533 | static struct inet6_ifaddr * |
| @@ -573,8 +593,7 @@ ipv6_add_addr(struct inet6_dev *idev, const struct in6_addr *addr, int pfxlen, | |||
| 573 | 593 | ||
| 574 | write_lock(&idev->lock); | 594 | write_lock(&idev->lock); |
| 575 | /* Add to inet6_dev unicast addr list. */ | 595 | /* Add to inet6_dev unicast addr list. */ |
| 576 | ifa->if_next = idev->addr_list; | 596 | ipv6_link_dev_addr(idev, ifa); |
| 577 | idev->addr_list = ifa; | ||
| 578 | 597 | ||
| 579 | #ifdef CONFIG_IPV6_PRIVACY | 598 | #ifdef CONFIG_IPV6_PRIVACY |
| 580 | if (ifa->flags&IFA_F_TEMPORARY) { | 599 | if (ifa->flags&IFA_F_TEMPORARY) { |
| @@ -987,7 +1006,7 @@ int ipv6_dev_get_saddr(struct net_device *daddr_dev, | |||
| 987 | continue; | 1006 | continue; |
| 988 | } else if (score.scope < hiscore.scope) { | 1007 | } else if (score.scope < hiscore.scope) { |
| 989 | if (score.scope < daddr_scope) | 1008 | if (score.scope < daddr_scope) |
| 990 | continue; | 1009 | break; /* addresses sorted by scope */ |
| 991 | else { | 1010 | else { |
| 992 | score.rule = 2; | 1011 | score.rule = 2; |
| 993 | goto record_it; | 1012 | goto record_it; |
diff --git a/net/ipv6/ipcomp6.c b/net/ipv6/ipcomp6.c index b285b0357084..7e4d1c17bfbc 100644 --- a/net/ipv6/ipcomp6.c +++ b/net/ipv6/ipcomp6.c | |||
| @@ -109,7 +109,8 @@ static int ipcomp6_input(struct xfrm_state *x, struct sk_buff *skb) | |||
| 109 | goto out_put_cpu; | 109 | goto out_put_cpu; |
| 110 | } | 110 | } |
| 111 | 111 | ||
| 112 | skb_put(skb, dlen - plen); | 112 | skb->truesize += dlen - plen; |
| 113 | __skb_put(skb, dlen - plen); | ||
| 113 | memcpy(skb->data, scratch, dlen); | 114 | memcpy(skb->data, scratch, dlen); |
| 114 | err = ipch->nexthdr; | 115 | err = ipch->nexthdr; |
| 115 | 116 | ||
diff --git a/net/netrom/af_netrom.c b/net/netrom/af_netrom.c index ecc796878f38..1d50f801f181 100644 --- a/net/netrom/af_netrom.c +++ b/net/netrom/af_netrom.c | |||
| @@ -66,6 +66,14 @@ static DEFINE_SPINLOCK(nr_list_lock); | |||
| 66 | static const struct proto_ops nr_proto_ops; | 66 | static const struct proto_ops nr_proto_ops; |
| 67 | 67 | ||
| 68 | /* | 68 | /* |
| 69 | * NETROM network devices are virtual network devices encapsulating NETROM | ||
| 70 | * frames into AX.25 which will be sent through an AX.25 device, so form a | ||
| 71 | * special "super class" of normal net devices; split their locks off into a | ||
| 72 | * separate class since they always nest. | ||
| 73 | */ | ||
| 74 | static struct lock_class_key nr_netdev_xmit_lock_key; | ||
| 75 | |||
| 76 | /* | ||
| 69 | * Socket removal during an interrupt is now safe. | 77 | * Socket removal during an interrupt is now safe. |
| 70 | */ | 78 | */ |
| 71 | static void nr_remove_socket(struct sock *sk) | 79 | static void nr_remove_socket(struct sock *sk) |
| @@ -986,18 +994,18 @@ int nr_rx_frame(struct sk_buff *skb, struct net_device *dev) | |||
| 986 | nr_make->vl = 0; | 994 | nr_make->vl = 0; |
| 987 | nr_make->state = NR_STATE_3; | 995 | nr_make->state = NR_STATE_3; |
| 988 | sk_acceptq_added(sk); | 996 | sk_acceptq_added(sk); |
| 989 | |||
| 990 | nr_insert_socket(make); | ||
| 991 | |||
| 992 | skb_queue_head(&sk->sk_receive_queue, skb); | 997 | skb_queue_head(&sk->sk_receive_queue, skb); |
| 993 | 998 | ||
| 994 | nr_start_heartbeat(make); | ||
| 995 | nr_start_idletimer(make); | ||
| 996 | |||
| 997 | if (!sock_flag(sk, SOCK_DEAD)) | 999 | if (!sock_flag(sk, SOCK_DEAD)) |
| 998 | sk->sk_data_ready(sk, skb->len); | 1000 | sk->sk_data_ready(sk, skb->len); |
| 999 | 1001 | ||
| 1000 | bh_unlock_sock(sk); | 1002 | bh_unlock_sock(sk); |
| 1003 | |||
| 1004 | nr_insert_socket(make); | ||
| 1005 | |||
| 1006 | nr_start_heartbeat(make); | ||
| 1007 | nr_start_idletimer(make); | ||
| 1008 | |||
| 1001 | return 1; | 1009 | return 1; |
| 1002 | } | 1010 | } |
| 1003 | 1011 | ||
| @@ -1405,6 +1413,7 @@ static int __init nr_proto_init(void) | |||
| 1405 | free_netdev(dev); | 1413 | free_netdev(dev); |
| 1406 | goto fail; | 1414 | goto fail; |
| 1407 | } | 1415 | } |
| 1416 | lockdep_set_class(&dev->_xmit_lock, &nr_netdev_xmit_lock_key); | ||
| 1408 | dev_nr[i] = dev; | 1417 | dev_nr[i] = dev; |
| 1409 | } | 1418 | } |
| 1410 | 1419 | ||
diff --git a/net/netrom/nr_timer.c b/net/netrom/nr_timer.c index 75b72d389ba9..ddba1c144260 100644 --- a/net/netrom/nr_timer.c +++ b/net/netrom/nr_timer.c | |||
| @@ -138,8 +138,8 @@ static void nr_heartbeat_expiry(unsigned long param) | |||
| 138 | if (sock_flag(sk, SOCK_DESTROY) || | 138 | if (sock_flag(sk, SOCK_DESTROY) || |
| 139 | (sk->sk_state == TCP_LISTEN && sock_flag(sk, SOCK_DEAD))) { | 139 | (sk->sk_state == TCP_LISTEN && sock_flag(sk, SOCK_DEAD))) { |
| 140 | sock_hold(sk); | 140 | sock_hold(sk); |
| 141 | nr_destroy_socket(sk); | ||
| 142 | bh_unlock_sock(sk); | 141 | bh_unlock_sock(sk); |
| 142 | nr_destroy_socket(sk); | ||
| 143 | sock_put(sk); | 143 | sock_put(sk); |
| 144 | return; | 144 | return; |
| 145 | } | 145 | } |
diff --git a/net/rose/af_rose.c b/net/rose/af_rose.c index c115295ab431..08a542855654 100644 --- a/net/rose/af_rose.c +++ b/net/rose/af_rose.c | |||
| @@ -67,6 +67,14 @@ static struct proto_ops rose_proto_ops; | |||
| 67 | ax25_address rose_callsign; | 67 | ax25_address rose_callsign; |
| 68 | 68 | ||
| 69 | /* | 69 | /* |
| 70 | * ROSE network devices are virtual network devices encapsulating ROSE | ||
| 71 | * frames into AX.25 which will be sent through an AX.25 device, so form a | ||
| 72 | * special "super class" of normal net devices; split their locks off into a | ||
| 73 | * separate class since they always nest. | ||
| 74 | */ | ||
| 75 | static struct lock_class_key rose_netdev_xmit_lock_key; | ||
| 76 | |||
| 77 | /* | ||
| 70 | * Convert a ROSE address into text. | 78 | * Convert a ROSE address into text. |
| 71 | */ | 79 | */ |
| 72 | const char *rose2asc(const rose_address *addr) | 80 | const char *rose2asc(const rose_address *addr) |
| @@ -1515,6 +1523,7 @@ static int __init rose_proto_init(void) | |||
| 1515 | free_netdev(dev); | 1523 | free_netdev(dev); |
| 1516 | goto fail; | 1524 | goto fail; |
| 1517 | } | 1525 | } |
| 1526 | lockdep_set_class(&dev->_xmit_lock, &rose_netdev_xmit_lock_key); | ||
| 1518 | dev_rose[i] = dev; | 1527 | dev_rose[i] = dev; |
| 1519 | } | 1528 | } |
| 1520 | 1529 | ||
diff --git a/net/sched/act_api.c b/net/sched/act_api.c index 0972247a839c..9affeeedf107 100644 --- a/net/sched/act_api.c +++ b/net/sched/act_api.c | |||
| @@ -884,8 +884,6 @@ static int __init tc_action_init(void) | |||
| 884 | link_p[RTM_GETACTION-RTM_BASE].dumpit = tc_dump_action; | 884 | link_p[RTM_GETACTION-RTM_BASE].dumpit = tc_dump_action; |
| 885 | } | 885 | } |
| 886 | 886 | ||
| 887 | printk("TC classifier action (bugs to netdev@vger.kernel.org cc " | ||
| 888 | "hadi@cyberus.ca)\n"); | ||
| 889 | return 0; | 887 | return 0; |
| 890 | } | 888 | } |
| 891 | 889 | ||
