summaryrefslogtreecommitdiff
path: root/dissector_eth.h
blob: 45d3b6cb754163d6ef87dc47452bc11f4f185f6d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/*
 * netsniff-ng - the packet sniffing beast
 * Copyright 2009, 2010 Daniel Borkmann.
 * Subject to the GPL, version 2.
 */

#ifndef DISSECTOR_ETH_H
#define DISSECTOR_ETH_H

#include "hash.h"
#include "proto.h"
#include "protos.h"
#include "tprintf.h"
#include "oui.h"

extern struct hash_table eth_lay2;
extern struct hash_table eth_lay3;

extern void dissector_init_ethernet(int fnttype);
extern void dissector_cleanup_ethernet(void);

extern char *lookup_port_udp(unsigned int id);
extern char *lookup_port_tcp(unsigned int id);
extern char *lookup_ether_type(unsigned int id);

#ifdef HAVE_DISSECTOR_PROTOS
static inline struct protocol *dissector_get_ethernet_entry_point(void)
{
	return &ethernet_ops;
}

static inline struct protocol *dissector_get_ethernet_exit_point(void)
{
	return &none_ops;
}
#else
static inline struct protocol *dissector_get_ethernet_entry_point(void)
{
	return NULL;
}

static inline struct protocol *dissector_get_ethernet_exit_point(void)
{
	return NULL;
}
#endif
#endif /* DISSECTOR_ETH_H */
e and then sleeps, because the queue is empty. - the msgrcv() calls do not perform any wakeups, because the msgsnd() task has not yet called ss_add(). - then the msgsnd()-thread first calls ss_add() and then sleeps. Net result: msgsnd() and msgrcv() both sleep forever. Observed with msgctl08 from ltp with a preemptible kernel. Fix: Call ipc_lock_object() before performing the check. The patch also moves security_msg_queue_msgsnd() under ipc_lock_object: - msgctl(IPC_SET) explicitely mentions that it tries to expunge any pending operations that are not allowed anymore with the new permissions. If security_msg_queue_msgsnd() is called without locks, then there might be races. - it makes the patch much simpler. Reported-and-tested-by: Vineet Gupta <Vineet.Gupta1@synopsys.com> Acked-by: Rik van Riel <riel@redhat.com> Cc: stable@vger.kernel.org # for 3.11 Signed-off-by: Manfred Spraul <manfred@colorfullife.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'ipc/msg.c')