diff options
| author | Takashi Iwai <tiwai@suse.de> | 2013-11-04 10:05:07 +0100 |
|---|---|---|
| committer | Takashi Iwai <tiwai@suse.de> | 2013-11-04 10:05:07 +0100 |
| commit | ebfe1068f9ca4d0f25beca7a65d652380c40f226 (patch) | |
| tree | 109cfece95e42345d915c4c13e3bb1697ff02f65 /include/linux/filter.h | |
| parent | 023838542dc8a4eac9650f98942671078a4ce73d (diff) | |
| parent | 71d0c3a876e007f68fc2ed433119dd4f4dc408a7 (diff) | |
| download | linux-ebfe1068f9ca4d0f25beca7a65d652380c40f226.tar.gz linux-ebfe1068f9ca4d0f25beca7a65d652380c40f226.tar.bz2 linux-ebfe1068f9ca4d0f25beca7a65d652380c40f226.zip | |
Merge tag 'asoc-v3.13-2' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-next
ASoC: Final updates for v3.13
A few final updates for v3.13, all driver updates apart from some DPCM
and Coverity fixes which should have minor impact on practical systems.
Diffstat (limited to 'include/linux/filter.h')
| -rw-r--r-- | include/linux/filter.h | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/include/linux/filter.h b/include/linux/filter.h index a6ac84871d6d..ff4e40cd45b1 100644 --- a/include/linux/filter.h +++ b/include/linux/filter.h @@ -6,6 +6,7 @@ #include <linux/atomic.h> #include <linux/compat.h> +#include <linux/workqueue.h> #include <uapi/linux/filter.h> #ifdef CONFIG_COMPAT @@ -25,15 +26,19 @@ struct sk_filter { atomic_t refcnt; unsigned int len; /* Number of filter blocks */ + struct rcu_head rcu; unsigned int (*bpf_func)(const struct sk_buff *skb, const struct sock_filter *filter); - struct rcu_head rcu; - struct sock_filter insns[0]; + union { + struct sock_filter insns[0]; + struct work_struct work; + }; }; -static inline unsigned int sk_filter_len(const struct sk_filter *fp) +static inline unsigned int sk_filter_size(unsigned int proglen) { - return fp->len * sizeof(struct sock_filter) + sizeof(*fp); + return max(sizeof(struct sk_filter), + offsetof(struct sk_filter, insns[proglen])); } extern int sk_filter(struct sock *sk, struct sk_buff *skb); @@ -67,11 +72,13 @@ static inline void bpf_jit_dump(unsigned int flen, unsigned int proglen, } #define SK_RUN_FILTER(FILTER, SKB) (*FILTER->bpf_func)(SKB, FILTER->insns) #else +#include <linux/slab.h> static inline void bpf_jit_compile(struct sk_filter *fp) { } static inline void bpf_jit_free(struct sk_filter *fp) { + kfree(fp); } #define SK_RUN_FILTER(FILTER, SKB) sk_run_filter(SKB, FILTER->insns) #endif |
