Skip to content

Commit 53af53a

Browse files
committed
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts: include/linux/netdevice.h net/core/sock.c Trivial merge issues. Removal of "extern" for functions declaration in netdevice.h at the same time "const" was added to an argument. Two parallel line additions in net/core/sock.c Signed-off-by: David S. Miller <davem@davemloft.net>
2 parents b343ca8 + 9684d7b commit 53af53a

File tree

62 files changed

+475
-207
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+475
-207
lines changed

Documentation/connector/ucon.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ static int netlink_send(int s, struct cn_msg *msg)
7171
nlh->nlmsg_seq = seq++;
7272
nlh->nlmsg_pid = getpid();
7373
nlh->nlmsg_type = NLMSG_DONE;
74-
nlh->nlmsg_len = NLMSG_LENGTH(size - sizeof(*nlh));
74+
nlh->nlmsg_len = size;
7575
nlh->nlmsg_flags = 0;
7676

7777
m = NLMSG_DATA(nlh);

MAINTAINERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1785,6 +1785,7 @@ F: include/net/bluetooth/
17851785

17861786
BONDING DRIVER
17871787
M: Jay Vosburgh <fubar@us.ibm.com>
1788+
M: Veaceslav Falico <vfalico@redhat.com>
17881789
M: Andy Gospodarek <andy@greyhouse.net>
17891790
L: netdev@vger.kernel.org
17901791
W: http://sourceforge.net/projects/bonding/

arch/arm/net/bpf_jit_32.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -930,4 +930,5 @@ void bpf_jit_free(struct sk_filter *fp)
930930
{
931931
if (fp->bpf_func != sk_run_filter)
932932
module_free(NULL, fp->bpf_func);
933+
kfree(fp);
933934
}

arch/powerpc/net/bpf_jit_comp.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -691,4 +691,5 @@ void bpf_jit_free(struct sk_filter *fp)
691691
{
692692
if (fp->bpf_func != sk_run_filter)
693693
module_free(NULL, fp->bpf_func);
694+
kfree(fp);
694695
}

arch/s390/net/bpf_jit_comp.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -881,7 +881,9 @@ void bpf_jit_free(struct sk_filter *fp)
881881
struct bpf_binary_header *header = (void *)addr;
882882

883883
if (fp->bpf_func == sk_run_filter)
884-
return;
884+
goto free_filter;
885885
set_memory_rw(addr, header->pages);
886886
module_free(NULL, header);
887+
free_filter:
888+
kfree(fp);
887889
}

arch/sparc/net/bpf_jit_comp.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -808,4 +808,5 @@ void bpf_jit_free(struct sk_filter *fp)
808808
{
809809
if (fp->bpf_func != sk_run_filter)
810810
module_free(NULL, fp->bpf_func);
811+
kfree(fp);
811812
}

arch/x86/net/bpf_jit_comp.c

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -772,13 +772,21 @@ cond_branch: f_offset = addrs[i + filter[i].jf] - addrs[i];
772772
return;
773773
}
774774

775+
static void bpf_jit_free_deferred(struct work_struct *work)
776+
{
777+
struct sk_filter *fp = container_of(work, struct sk_filter, work);
778+
unsigned long addr = (unsigned long)fp->bpf_func & PAGE_MASK;
779+
struct bpf_binary_header *header = (void *)addr;
780+
781+
set_memory_rw(addr, header->pages);
782+
module_free(NULL, header);
783+
kfree(fp);
784+
}
785+
775786
void bpf_jit_free(struct sk_filter *fp)
776787
{
777788
if (fp->bpf_func != sk_run_filter) {
778-
unsigned long addr = (unsigned long)fp->bpf_func & PAGE_MASK;
779-
struct bpf_binary_header *header = (void *)addr;
780-
781-
set_memory_rw(addr, header->pages);
782-
module_free(NULL, header);
789+
INIT_WORK(&fp->work, bpf_jit_free_deferred);
790+
schedule_work(&fp->work);
783791
}
784792
}

drivers/connector/cn_proc.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ void proc_fork_connector(struct task_struct *task)
6565

6666
msg = (struct cn_msg *)buffer;
6767
ev = (struct proc_event *)msg->data;
68+
memset(&ev->event_data, 0, sizeof(ev->event_data));
6869
get_seq(&msg->seq, &ev->cpu);
6970
ktime_get_ts(&ts); /* get high res monotonic timestamp */
7071
put_unaligned(timespec_to_ns(&ts), (__u64 *)&ev->timestamp_ns);
@@ -80,6 +81,7 @@ void proc_fork_connector(struct task_struct *task)
8081
memcpy(&msg->id, &cn_proc_event_id, sizeof(msg->id));
8182
msg->ack = 0; /* not used */
8283
msg->len = sizeof(*ev);
84+
msg->flags = 0; /* not used */
8385
/* If cn_netlink_send() failed, the data is not sent */
8486
cn_netlink_send(msg, CN_IDX_PROC, GFP_KERNEL);
8587
}
@@ -96,6 +98,7 @@ void proc_exec_connector(struct task_struct *task)
9698

9799
msg = (struct cn_msg *)buffer;
98100
ev = (struct proc_event *)msg->data;
101+
memset(&ev->event_data, 0, sizeof(ev->event_data));
99102
get_seq(&msg->seq, &ev->cpu);
100103
ktime_get_ts(&ts); /* get high res monotonic timestamp */
101104
put_unaligned(timespec_to_ns(&ts), (__u64 *)&ev->timestamp_ns);
@@ -106,6 +109,7 @@ void proc_exec_connector(struct task_struct *task)
106109
memcpy(&msg->id, &cn_proc_event_id, sizeof(msg->id));
107110
msg->ack = 0; /* not used */
108111
msg->len = sizeof(*ev);
112+
msg->flags = 0; /* not used */
109113
cn_netlink_send(msg, CN_IDX_PROC, GFP_KERNEL);
110114
}
111115

@@ -122,6 +126,7 @@ void proc_id_connector(struct task_struct *task, int which_id)
122126

123127
msg = (struct cn_msg *)buffer;
124128
ev = (struct proc_event *)msg->data;
129+
memset(&ev->event_data, 0, sizeof(ev->event_data));
125130
ev->what = which_id;
126131
ev->event_data.id.process_pid = task->pid;
127132
ev->event_data.id.process_tgid = task->tgid;
@@ -145,6 +150,7 @@ void proc_id_connector(struct task_struct *task, int which_id)
145150
memcpy(&msg->id, &cn_proc_event_id, sizeof(msg->id));
146151
msg->ack = 0; /* not used */
147152
msg->len = sizeof(*ev);
153+
msg->flags = 0; /* not used */
148154
cn_netlink_send(msg, CN_IDX_PROC, GFP_KERNEL);
149155
}
150156

@@ -160,6 +166,7 @@ void proc_sid_connector(struct task_struct *task)
160166

161167
msg = (struct cn_msg *)buffer;
162168
ev = (struct proc_event *)msg->data;
169+
memset(&ev->event_data, 0, sizeof(ev->event_data));
163170
get_seq(&msg->seq, &ev->cpu);
164171
ktime_get_ts(&ts); /* get high res monotonic timestamp */
165172
put_unaligned(timespec_to_ns(&ts), (__u64 *)&ev->timestamp_ns);
@@ -170,6 +177,7 @@ void proc_sid_connector(struct task_struct *task)
170177
memcpy(&msg->id, &cn_proc_event_id, sizeof(msg->id));
171178
msg->ack = 0; /* not used */
172179
msg->len = sizeof(*ev);
180+
msg->flags = 0; /* not used */
173181
cn_netlink_send(msg, CN_IDX_PROC, GFP_KERNEL);
174182
}
175183

@@ -185,6 +193,7 @@ void proc_ptrace_connector(struct task_struct *task, int ptrace_id)
185193

186194
msg = (struct cn_msg *)buffer;
187195
ev = (struct proc_event *)msg->data;
196+
memset(&ev->event_data, 0, sizeof(ev->event_data));
188197
get_seq(&msg->seq, &ev->cpu);
189198
ktime_get_ts(&ts); /* get high res monotonic timestamp */
190199
put_unaligned(timespec_to_ns(&ts), (__u64 *)&ev->timestamp_ns);
@@ -203,6 +212,7 @@ void proc_ptrace_connector(struct task_struct *task, int ptrace_id)
203212
memcpy(&msg->id, &cn_proc_event_id, sizeof(msg->id));
204213
msg->ack = 0; /* not used */
205214
msg->len = sizeof(*ev);
215+
msg->flags = 0; /* not used */
206216
cn_netlink_send(msg, CN_IDX_PROC, GFP_KERNEL);
207217
}
208218

@@ -218,6 +228,7 @@ void proc_comm_connector(struct task_struct *task)
218228

219229
msg = (struct cn_msg *)buffer;
220230
ev = (struct proc_event *)msg->data;
231+
memset(&ev->event_data, 0, sizeof(ev->event_data));
221232
get_seq(&msg->seq, &ev->cpu);
222233
ktime_get_ts(&ts); /* get high res monotonic timestamp */
223234
put_unaligned(timespec_to_ns(&ts), (__u64 *)&ev->timestamp_ns);
@@ -229,6 +240,7 @@ void proc_comm_connector(struct task_struct *task)
229240
memcpy(&msg->id, &cn_proc_event_id, sizeof(msg->id));
230241
msg->ack = 0; /* not used */
231242
msg->len = sizeof(*ev);
243+
msg->flags = 0; /* not used */
232244
cn_netlink_send(msg, CN_IDX_PROC, GFP_KERNEL);
233245
}
234246

@@ -244,6 +256,7 @@ void proc_coredump_connector(struct task_struct *task)
244256

245257
msg = (struct cn_msg *)buffer;
246258
ev = (struct proc_event *)msg->data;
259+
memset(&ev->event_data, 0, sizeof(ev->event_data));
247260
get_seq(&msg->seq, &ev->cpu);
248261
ktime_get_ts(&ts); /* get high res monotonic timestamp */
249262
put_unaligned(timespec_to_ns(&ts), (__u64 *)&ev->timestamp_ns);
@@ -254,6 +267,7 @@ void proc_coredump_connector(struct task_struct *task)
254267
memcpy(&msg->id, &cn_proc_event_id, sizeof(msg->id));
255268
msg->ack = 0; /* not used */
256269
msg->len = sizeof(*ev);
270+
msg->flags = 0; /* not used */
257271
cn_netlink_send(msg, CN_IDX_PROC, GFP_KERNEL);
258272
}
259273

@@ -269,6 +283,7 @@ void proc_exit_connector(struct task_struct *task)
269283

270284
msg = (struct cn_msg *)buffer;
271285
ev = (struct proc_event *)msg->data;
286+
memset(&ev->event_data, 0, sizeof(ev->event_data));
272287
get_seq(&msg->seq, &ev->cpu);
273288
ktime_get_ts(&ts); /* get high res monotonic timestamp */
274289
put_unaligned(timespec_to_ns(&ts), (__u64 *)&ev->timestamp_ns);
@@ -281,6 +296,7 @@ void proc_exit_connector(struct task_struct *task)
281296
memcpy(&msg->id, &cn_proc_event_id, sizeof(msg->id));
282297
msg->ack = 0; /* not used */
283298
msg->len = sizeof(*ev);
299+
msg->flags = 0; /* not used */
284300
cn_netlink_send(msg, CN_IDX_PROC, GFP_KERNEL);
285301
}
286302

@@ -304,6 +320,7 @@ static void cn_proc_ack(int err, int rcvd_seq, int rcvd_ack)
304320

305321
msg = (struct cn_msg *)buffer;
306322
ev = (struct proc_event *)msg->data;
323+
memset(&ev->event_data, 0, sizeof(ev->event_data));
307324
msg->seq = rcvd_seq;
308325
ktime_get_ts(&ts); /* get high res monotonic timestamp */
309326
put_unaligned(timespec_to_ns(&ts), (__u64 *)&ev->timestamp_ns);
@@ -313,6 +330,7 @@ static void cn_proc_ack(int err, int rcvd_seq, int rcvd_ack)
313330
memcpy(&msg->id, &cn_proc_event_id, sizeof(msg->id));
314331
msg->ack = rcvd_ack + 1;
315332
msg->len = sizeof(*ev);
333+
msg->flags = 0; /* not used */
316334
cn_netlink_send(msg, CN_IDX_PROC, GFP_KERNEL);
317335
}
318336

drivers/connector/connector.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ int cn_netlink_send(struct cn_msg *msg, u32 __group, gfp_t gfp_mask)
109109

110110
data = nlmsg_data(nlh);
111111

112-
memcpy(data, msg, sizeof(*data) + msg->len);
112+
memcpy(data, msg, size);
113113

114114
NETLINK_CB(skb).dst_group = group;
115115

@@ -157,17 +157,18 @@ static int cn_call_callback(struct sk_buff *skb)
157157
static void cn_rx_skb(struct sk_buff *__skb)
158158
{
159159
struct nlmsghdr *nlh;
160-
int err;
161160
struct sk_buff *skb;
161+
int len, err;
162162

163163
skb = skb_get(__skb);
164164

165165
if (skb->len >= NLMSG_HDRLEN) {
166166
nlh = nlmsg_hdr(skb);
167+
len = nlmsg_len(nlh);
167168

168-
if (nlh->nlmsg_len < sizeof(struct cn_msg) ||
169+
if (len < (int)sizeof(struct cn_msg) ||
169170
skb->len < nlh->nlmsg_len ||
170-
nlh->nlmsg_len > CONNECTOR_MAX_MSG_SIZE) {
171+
len > CONNECTOR_MAX_MSG_SIZE) {
171172
kfree_skb(skb);
172173
return;
173174
}

drivers/net/can/dev.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -705,14 +705,14 @@ static size_t can_get_size(const struct net_device *dev)
705705
size_t size;
706706

707707
size = nla_total_size(sizeof(u32)); /* IFLA_CAN_STATE */
708-
size += sizeof(struct can_ctrlmode); /* IFLA_CAN_CTRLMODE */
708+
size += nla_total_size(sizeof(struct can_ctrlmode)); /* IFLA_CAN_CTRLMODE */
709709
size += nla_total_size(sizeof(u32)); /* IFLA_CAN_RESTART_MS */
710-
size += sizeof(struct can_bittiming); /* IFLA_CAN_BITTIMING */
711-
size += sizeof(struct can_clock); /* IFLA_CAN_CLOCK */
710+
size += nla_total_size(sizeof(struct can_bittiming)); /* IFLA_CAN_BITTIMING */
711+
size += nla_total_size(sizeof(struct can_clock)); /* IFLA_CAN_CLOCK */
712712
if (priv->do_get_berr_counter) /* IFLA_CAN_BERR_COUNTER */
713-
size += sizeof(struct can_berr_counter);
713+
size += nla_total_size(sizeof(struct can_berr_counter));
714714
if (priv->bittiming_const) /* IFLA_CAN_BITTIMING_CONST */
715-
size += sizeof(struct can_bittiming_const);
715+
size += nla_total_size(sizeof(struct can_bittiming_const));
716716

717717
return size;
718718
}

drivers/net/ethernet/calxeda/xgmac.c

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,6 @@
106106
#define XGMAC_DMA_HW_FEATURE 0x00000f58 /* Enabled Hardware Features */
107107

108108
#define XGMAC_ADDR_AE 0x80000000
109-
#define XGMAC_MAX_FILTER_ADDR 31
110109

111110
/* PMT Control and Status */
112111
#define XGMAC_PMT_POINTER_RESET 0x80000000
@@ -384,6 +383,7 @@ struct xgmac_priv {
384383
struct device *device;
385384
struct napi_struct napi;
386385

386+
int max_macs;
387387
struct xgmac_extra_stats xstats;
388388

389389
spinlock_t stats_lock;
@@ -1291,14 +1291,12 @@ static void xgmac_set_rx_mode(struct net_device *dev)
12911291
netdev_dbg(priv->dev, "# mcasts %d, # unicast %d\n",
12921292
netdev_mc_count(dev), netdev_uc_count(dev));
12931293

1294-
if (dev->flags & IFF_PROMISC) {
1295-
writel(XGMAC_FRAME_FILTER_PR, ioaddr + XGMAC_FRAME_FILTER);
1296-
return;
1297-
}
1294+
if (dev->flags & IFF_PROMISC)
1295+
value |= XGMAC_FRAME_FILTER_PR;
12981296

12991297
memset(hash_filter, 0, sizeof(hash_filter));
13001298

1301-
if (netdev_uc_count(dev) > XGMAC_MAX_FILTER_ADDR) {
1299+
if (netdev_uc_count(dev) > priv->max_macs) {
13021300
use_hash = true;
13031301
value |= XGMAC_FRAME_FILTER_HUC | XGMAC_FRAME_FILTER_HPF;
13041302
}
@@ -1321,7 +1319,7 @@ static void xgmac_set_rx_mode(struct net_device *dev)
13211319
goto out;
13221320
}
13231321

1324-
if ((netdev_mc_count(dev) + reg - 1) > XGMAC_MAX_FILTER_ADDR) {
1322+
if ((netdev_mc_count(dev) + reg - 1) > priv->max_macs) {
13251323
use_hash = true;
13261324
value |= XGMAC_FRAME_FILTER_HMC | XGMAC_FRAME_FILTER_HPF;
13271325
} else {
@@ -1342,8 +1340,8 @@ static void xgmac_set_rx_mode(struct net_device *dev)
13421340
}
13431341

13441342
out:
1345-
for (i = reg; i < XGMAC_MAX_FILTER_ADDR; i++)
1346-
xgmac_set_mac_addr(ioaddr, NULL, reg);
1343+
for (i = reg; i <= priv->max_macs; i++)
1344+
xgmac_set_mac_addr(ioaddr, NULL, i);
13471345
for (i = 0; i < XGMAC_NUM_HASH; i++)
13481346
writel(hash_filter[i], ioaddr + XGMAC_HASH(i));
13491347

@@ -1761,6 +1759,13 @@ static int xgmac_probe(struct platform_device *pdev)
17611759
uid = readl(priv->base + XGMAC_VERSION);
17621760
netdev_info(ndev, "h/w version is 0x%x\n", uid);
17631761

1762+
/* Figure out how many valid mac address filter registers we have */
1763+
writel(1, priv->base + XGMAC_ADDR_HIGH(31));
1764+
if (readl(priv->base + XGMAC_ADDR_HIGH(31)) == 1)
1765+
priv->max_macs = 31;
1766+
else
1767+
priv->max_macs = 7;
1768+
17641769
writel(0, priv->base + XGMAC_DMA_INTR_ENA);
17651770
ndev->irq = platform_get_irq(pdev, 0);
17661771
if (ndev->irq == -ENXIO) {

drivers/net/ethernet/intel/igb/igb_ethtool.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2657,6 +2657,8 @@ static int igb_set_eee(struct net_device *netdev,
26572657
(hw->phy.media_type != e1000_media_type_copper))
26582658
return -EOPNOTSUPP;
26592659

2660+
memset(&eee_curr, 0, sizeof(struct ethtool_eee));
2661+
26602662
ret_val = igb_get_eee(netdev, &eee_curr);
26612663
if (ret_val)
26622664
return ret_val;

drivers/net/ethernet/marvell/mv643xx_eth.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1131,15 +1131,13 @@ static void mib_counters_update(struct mv643xx_eth_private *mp)
11311131
p->rx_discard += rdlp(mp, RX_DISCARD_FRAME_CNT);
11321132
p->rx_overrun += rdlp(mp, RX_OVERRUN_FRAME_CNT);
11331133
spin_unlock_bh(&mp->mib_counters_lock);
1134-
1135-
mod_timer(&mp->mib_counters_timer, jiffies + 30 * HZ);
11361134
}
11371135

11381136
static void mib_counters_timer_wrapper(unsigned long _mp)
11391137
{
11401138
struct mv643xx_eth_private *mp = (void *)_mp;
1141-
11421139
mib_counters_update(mp);
1140+
mod_timer(&mp->mib_counters_timer, jiffies + 30 * HZ);
11431141
}
11441142

11451143

@@ -2237,6 +2235,7 @@ static int mv643xx_eth_open(struct net_device *dev)
22372235
mp->int_mask |= INT_TX_END_0 << i;
22382236
}
22392237

2238+
add_timer(&mp->mib_counters_timer);
22402239
port_start(mp);
22412240

22422241
wrlp(mp, INT_MASK_EXT, INT_EXT_LINK_PHY | INT_EXT_TX);
@@ -2534,6 +2533,7 @@ static int mv643xx_eth_shared_of_add_port(struct platform_device *pdev,
25342533
if (!ppdev)
25352534
return -ENOMEM;
25362535
ppdev->dev.coherent_dma_mask = DMA_BIT_MASK(32);
2536+
ppdev->dev.of_node = pnp;
25372537

25382538
ret = platform_device_add_resources(ppdev, &res, 1);
25392539
if (ret)
@@ -2916,7 +2916,6 @@ static int mv643xx_eth_probe(struct platform_device *pdev)
29162916
mp->mib_counters_timer.data = (unsigned long)mp;
29172917
mp->mib_counters_timer.function = mib_counters_timer_wrapper;
29182918
mp->mib_counters_timer.expires = jiffies + 30 * HZ;
2919-
add_timer(&mp->mib_counters_timer);
29202919

29212920
spin_lock_init(&mp->mib_counters_lock);
29222921

0 commit comments

Comments
 (0)