summaryrefslogtreecommitdiffstats
path: root/net/strparser
diff options
context:
space:
mode:
authorJakub Kicinski <kuba@kernel.org>2022-07-07 18:03:09 -0700
committerJakub Kicinski <kuba@kernel.org>2022-07-08 18:38:44 -0700
commit2d91ecace6614cf6254001566292b808d7f70a91 (patch)
tree102051f148bc0998d65f0e2f15c3756eb3bf67ae /net/strparser
parent67d7ebdeb2d5a058dd5079107505fffe7332b27a (diff)
downloadlinux-2d91ecace6614cf6254001566292b808d7f70a91.tar.gz
linux-2d91ecace6614cf6254001566292b808d7f70a91.tar.bz2
linux-2d91ecace6614cf6254001566292b808d7f70a91.zip
strparser: pad sk_skb_cb to avoid straddling cachelines
sk_skb_cb lives within skb->cb[]. skb->cb[] straddles 2 cache lines, each containing 24B of data. The first cache line does not contain much interesting information for users of strparser, so pad things a little. Previously strp_msg->full_len would live in the first cache line and strp_msg->offset in the second. We need to reorder the 8 byte temp_reg with struct tls_msg to prevent a 4B hole which would push the struct over 48B. Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net/strparser')
-rw-r--r--net/strparser/strparser.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/net/strparser/strparser.c b/net/strparser/strparser.c
index 1a72c67afed5..8299ceb3e373 100644
--- a/net/strparser/strparser.c
+++ b/net/strparser/strparser.c
@@ -533,6 +533,9 @@ EXPORT_SYMBOL_GPL(strp_check_rcv);
static int __init strp_dev_init(void)
{
+ BUILD_BUG_ON(sizeof(struct sk_skb_cb) >
+ sizeof_field(struct sk_buff, cb));
+
strp_wq = create_singlethread_workqueue("kstrp");
if (unlikely(!strp_wq))
return -ENOMEM;