|
@@ -649,7 +649,8 @@ nfulnl_log_packet(struct net *net,
|
|
+ nla_total_size(sizeof(u_int32_t)) /* gid */
|
|
+ nla_total_size(sizeof(u_int32_t)) /* gid */
|
|
+ nla_total_size(plen) /* prefix */
|
|
+ nla_total_size(plen) /* prefix */
|
|
+ nla_total_size(sizeof(struct nfulnl_msg_packet_hw))
|
|
+ nla_total_size(sizeof(struct nfulnl_msg_packet_hw))
|
|
- + nla_total_size(sizeof(struct nfulnl_msg_packet_timestamp));
|
|
|
|
|
|
+ + nla_total_size(sizeof(struct nfulnl_msg_packet_timestamp))
|
|
|
|
+ + nla_total_size(sizeof(struct nfgenmsg)); /* NLMSG_DONE */
|
|
|
|
|
|
if (in && skb_mac_header_was_set(skb)) {
|
|
if (in && skb_mac_header_was_set(skb)) {
|
|
size += nla_total_size(skb->dev->hard_header_len)
|
|
size += nla_total_size(skb->dev->hard_header_len)
|
|
@@ -692,8 +693,7 @@ nfulnl_log_packet(struct net *net,
|
|
goto unlock_and_release;
|
|
goto unlock_and_release;
|
|
}
|
|
}
|
|
|
|
|
|
- if (inst->skb &&
|
|
|
|
- size > skb_tailroom(inst->skb) - sizeof(struct nfgenmsg)) {
|
|
|
|
|
|
+ if (inst->skb && size > skb_tailroom(inst->skb)) {
|
|
/* either the queue len is too high or we don't have
|
|
/* either the queue len is too high or we don't have
|
|
* enough room in the skb left. flush to userspace. */
|
|
* enough room in the skb left. flush to userspace. */
|
|
__nfulnl_flush(inst);
|
|
__nfulnl_flush(inst);
|