* @sk: sock associated with &sk_buff
* @skb: buffer to filter
* @cap: limit on how short the eBPF program may trim the packet
- * @reason: record drop reason on errors (negative return value)
+ * @reason: record drop reason
*
* Run the eBPF program and then cut skb->data to correct size returned by
* the program. If pkt_len is 0 we toss packet. If skb->len is smaller
pkt_len = bpf_prog_run_save_cb(filter->prog, skb);
skb->sk = save_sk;
err = pkt_len ? pskb_trim(skb, max(cap, pkt_len)) : -EPERM;
- if (err)
- *reason = SKB_DROP_REASON_SOCKET_FILTER;
}
rcu_read_unlock();
+ *reason = err ? SKB_DROP_REASON_SOCKET_FILTER : 0;
return err;
}
EXPORT_SYMBOL(sk_filter_trim_cap);