Commit 62ab0812 authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller
Browse files

filter: constify sk_run_filter()



sk_run_filter() doesnt write on skb, change its prototype to reflect
this.

Fix two af_packet comments.

Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 38f49e88
......@@ -148,7 +148,7 @@ struct sk_buff;
struct sock;
extern int sk_filter(struct sock *sk, struct sk_buff *skb);
extern unsigned int sk_run_filter(struct sk_buff *skb,
extern unsigned int sk_run_filter(const struct sk_buff *skb,
const struct sock_filter *filter);
extern int sk_attach_filter(struct sock_fprog *fprog, struct sock *sk);
extern int sk_detach_filter(struct sock *sk);
......
......@@ -88,7 +88,7 @@ enum {
};
/* No hurry in this branch */
static void *__load_pointer(struct sk_buff *skb, int k)
static void *__load_pointer(const struct sk_buff *skb, int k)
{
u8 *ptr = NULL;
......@@ -102,7 +102,7 @@ static void *__load_pointer(struct sk_buff *skb, int k)
return NULL;
}
static inline void *load_pointer(struct sk_buff *skb, int k,
static inline void *load_pointer(const struct sk_buff *skb, int k,
unsigned int size, void *buffer)
{
if (k >= 0)
......@@ -160,7 +160,8 @@ EXPORT_SYMBOL(sk_filter);
* and last instruction guaranteed to be a RET, we dont need to check
* flen. (We used to pass to this function the length of filter)
*/
unsigned int sk_run_filter(struct sk_buff *skb, const struct sock_filter *fentry)
unsigned int sk_run_filter(const struct sk_buff *skb,
const struct sock_filter *fentry)
{
void *ptr;
u32 A = 0; /* Accumulator */
......
......@@ -26,7 +26,7 @@ static struct sock_filter ptp_filter[] = {
PTP_FILTER
};
static unsigned int classify(struct sk_buff *skb)
static unsigned int classify(const struct sk_buff *skb)
{
if (likely(skb->dev &&
skb->dev->phydev &&
......
......@@ -517,7 +517,8 @@ static int packet_sendmsg_spkt(struct kiocb *iocb, struct socket *sock,
return err;
}
static inline unsigned int run_filter(struct sk_buff *skb, struct sock *sk,
static inline unsigned int run_filter(const struct sk_buff *skb,
const struct sock *sk,
unsigned int res)
{
struct sk_filter *filter;
......@@ -532,15 +533,15 @@ static inline unsigned int run_filter(struct sk_buff *skb, struct sock *sk,
}
/*
This function makes lazy skb cloning in hope that most of packets
are discarded by BPF.
Note tricky part: we DO mangle shared skb! skb->data, skb->len
and skb->cb are mangled. It works because (and until) packets
falling here are owned by current CPU. Output packets are cloned
by dev_queue_xmit_nit(), input packets are processed by net_bh
sequencially, so that if we return skb to original state on exit,
we will not harm anyone.
* This function makes lazy skb cloning in hope that most of packets
* are discarded by BPF.
*
* Note tricky part: we DO mangle shared skb! skb->data, skb->len
* and skb->cb are mangled. It works because (and until) packets
* falling here are owned by current CPU. Output packets are cloned
* by dev_queue_xmit_nit(), input packets are processed by net_bh
* sequencially, so that if we return skb to original state on exit,
* we will not harm anyone.
*/
static int packet_rcv(struct sk_buff *skb, struct net_device *dev,
......@@ -566,11 +567,11 @@ static int packet_rcv(struct sk_buff *skb, struct net_device *dev,
if (dev->header_ops) {
/* The device has an explicit notion of ll header,
exported to higher levels.
Otherwise, the device hides datails of it frame
structure, so that corresponding packet head
never delivered to user.
* exported to higher levels.
*
* Otherwise, the device hides details of its frame
* structure, so that corresponding packet head is
* never delivered to user.
*/
if (sk->sk_type != SOCK_DGRAM)
skb_push(skb, skb->data - skb_mac_header(skb));
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment