diff mbox series

[v7,net-next,1/7] netlink: Add a macro to set policy message with format string

Message ID 20230323163610.1281468-2-shayagr@amazon.com (mailing list archive)
State Superseded
Delegated to: Netdev Maintainers
Headers show
Series Add tx push buf len param to ethtool | expand

Checks

Context Check Description
netdev/series_format success Posting correctly formatted
netdev/tree_selection success Clearly marked for net-next
netdev/fixes_present success Fixes tag not required for -next series
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit success Errors and warnings before: 5054 this patch: 5054
netdev/cc_maintainers success CCed 6 of 6 maintainers
netdev/build_clang success Errors and warnings before: 979 this patch: 979
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/deprecated_api success None detected
netdev/check_selftest success No net selftest shell script
netdev/verify_fixes success No Fixes tag
netdev/build_allmodconfig_warn success Errors and warnings before: 5263 this patch: 5263
netdev/checkpatch warning WARNING: line length of 81 exceeds 80 columns
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline success Was 0 now: 0

Commit Message

Shay Agroskin March 23, 2023, 4:36 p.m. UTC
Similar to NL_SET_ERR_MSG_FMT, add a macro which sets netlink policy
error message with a format string.

Signed-off-by: Shay Agroskin <shayagr@amazon.com>
---
 include/linux/netlink.h | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

Comments

Jakub Kicinski March 23, 2023, 5:29 p.m. UTC | #1
On Thu, 23 Mar 2023 18:36:04 +0200 Shay Agroskin wrote:
> +#define NL_SET_ERR_MSG_ATTR_POL_FMT(extack, attr, pol, fmt, args...) do {	\
> +	struct netlink_ext_ack *__extack = (extack);				\
> +										\
> +	if (!__extack)								\
> +		break;								\
> +										\
> +	if (snprintf(__extack->_msg_buf, NETLINK_MAX_FMTMSG_LEN,		\
> +		     "%s" fmt "%s", "", ##args, "") >=				\
> +	    NETLINK_MAX_FMTMSG_LEN)						\
> +		net_warn_ratelimited("%s" fmt "%s", "truncated extack: ",       \
> +				     ##args, "\n");				\
> +										\
> +	do_trace_netlink_extack(__extack->_msg_buf);				\
> +										\
> +	__extack->_msg = __extack->_msg_buf;					\
> +	__extack->bad_attr = (attr);						\
> +	__extack->policy = (pol);						\
> +} while (0)

Given the misunderstanding let me give you an exception to the 24h 
wait period. Feel free to send v8 when ready, I'll drop this version 
from pw.
diff mbox series

Patch

diff --git a/include/linux/netlink.h b/include/linux/netlink.h
index 3e8743252167..19c0791ed9d5 100644
--- a/include/linux/netlink.h
+++ b/include/linux/netlink.h
@@ -161,9 +161,31 @@  struct netlink_ext_ack {
 	}							\
 } while (0)
 
+#define NL_SET_ERR_MSG_ATTR_POL_FMT(extack, attr, pol, fmt, args...) do {	\
+	struct netlink_ext_ack *__extack = (extack);				\
+										\
+	if (!__extack)								\
+		break;								\
+										\
+	if (snprintf(__extack->_msg_buf, NETLINK_MAX_FMTMSG_LEN,		\
+		     "%s" fmt "%s", "", ##args, "") >=				\
+	    NETLINK_MAX_FMTMSG_LEN)						\
+		net_warn_ratelimited("%s" fmt "%s", "truncated extack: ",       \
+				     ##args, "\n");				\
+										\
+	do_trace_netlink_extack(__extack->_msg_buf);				\
+										\
+	__extack->_msg = __extack->_msg_buf;					\
+	__extack->bad_attr = (attr);						\
+	__extack->policy = (pol);						\
+} while (0)
+
 #define NL_SET_ERR_MSG_ATTR(extack, attr, msg)		\
 	NL_SET_ERR_MSG_ATTR_POL(extack, attr, NULL, msg)
 
+#define NL_SET_ERR_MSG_ATTR_FMT(extack, attr, msg, args...) \
+	NL_SET_ERR_MSG_ATTR_POL_FMT(extack, attr, NULL, msg, ##args)
+
 #define NL_SET_ERR_ATTR_MISS(extack, nest, type)  do {	\
 	struct netlink_ext_ack *__extack = (extack);	\
 							\