netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC][PATCH -mm] Add genetlink utilities for payload length calculation
@ 2006-09-11  7:40 Balbir Singh
  2006-09-11  7:40 ` [RFC][PATCH -mm] Fix taskstats size calculation (use the new genetlink utility functions) Balbir Singh
  2006-09-11  7:40 ` [RFC][PATCH -mm] Fix getdelays.c - cpumask length and error reporting Balbir Singh
  0 siblings, 2 replies; 3+ messages in thread
From: Balbir Singh @ 2006-09-11  7:40 UTC (permalink / raw)
  To: akpm
  Cc: Jamal Hadi, Shailabh Nagar, Thomas Graf, netdev, Balbir Singh,
	linux-kernel



Add two utility helper functions genlmsg_msg_size() and genlmsg_total_size().
These functions are derived from their netlink counterparts.

Signed-off-by: Balbir Singh <balbir@in.ibm.com>
---

 include/net/genetlink.h |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+)

diff -puN include/net/genetlink.h~genetlink-payload-size-helpers include/net/genetlink.h
--- linux-2.6.18-rc6/include/net/genetlink.h~genetlink-payload-size-helpers	2006-09-11 10:34:56.000000000 +0530
+++ linux-2.6.18-rc6-balbir/include/net/genetlink.h	2006-09-11 11:42:37.000000000 +0530
@@ -171,4 +171,22 @@ static inline int genlmsg_len(const stru
 	return (nlh->nlmsg_len - GENL_HDRLEN - NLMSG_HDRLEN);
 }
 
+/**
+ * genlmsg_msg_size - length of genetlink message not including padding
+ * @payload: length of message payload
+ */
+static inline int genlmsg_msg_size(int payload)
+{
+	return GENL_HDRLEN + payload;
+}
+
+/**
+ * genlmsg_total_size - length of genetlink message including padding
+ * @payload: length of message payload
+ */
+static inline int genlmsg_total_size(int payload)
+{
+	return NLMSG_ALIGN(genlmsg_msg_size(payload));
+}
+
 #endif	/* __NET_GENERIC_NETLINK_H */
_

-- 

	Balbir Singh,
	Linux Technology Center,
	IBM Software Labs

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [RFC][PATCH -mm] Fix taskstats size calculation (use the new genetlink utility functions)
  2006-09-11  7:40 [RFC][PATCH -mm] Add genetlink utilities for payload length calculation Balbir Singh
@ 2006-09-11  7:40 ` Balbir Singh
  2006-09-11  7:40 ` [RFC][PATCH -mm] Fix getdelays.c - cpumask length and error reporting Balbir Singh
  1 sibling, 0 replies; 3+ messages in thread
From: Balbir Singh @ 2006-09-11  7:40 UTC (permalink / raw)
  To: akpm
  Cc: Balbir Singh, Jamal Hadi, Thomas Graf, netdev, Shailabh Nagar,
	linux-kernel



The addition of the CSA patch pushed the size of struct taskstats to 256
bytes. This exposed a problem with prepare_reply(), we were not allocating
space for the netlink and genetlink header. It worked earlier because
alloc_skb() would align the skb to SMP_CACHE_BYTES, which added some additonal
bytes.

Signed-off-by: Balbir Singh <balbir@in.ibm.com>
---

 kernel/taskstats.c |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)

diff -puN kernel/taskstats.c~taskstats-fix-msg-size kernel/taskstats.c
--- linux-2.6.18-rc6/kernel/taskstats.c~taskstats-fix-msg-size	2006-09-11 11:42:40.000000000 +0530
+++ linux-2.6.18-rc6-balbir/kernel/taskstats.c	2006-09-11 11:42:55.000000000 +0530
@@ -77,7 +77,7 @@ static int prepare_reply(struct genl_inf
 	/*
 	 * If new attributes are added, please revisit this allocation
 	 */
-	skb = nlmsg_new(size, GFP_KERNEL);
+	skb = nlmsg_new(genlmsg_total_size(size), GFP_KERNEL);
 	if (!skb)
 		return -ENOMEM;
 
_

-- 

	Balbir Singh,
	Linux Technology Center,
	IBM Software Labs

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [RFC][PATCH -mm] Fix getdelays.c - cpumask length and error reporting.
  2006-09-11  7:40 [RFC][PATCH -mm] Add genetlink utilities for payload length calculation Balbir Singh
  2006-09-11  7:40 ` [RFC][PATCH -mm] Fix taskstats size calculation (use the new genetlink utility functions) Balbir Singh
@ 2006-09-11  7:40 ` Balbir Singh
  1 sibling, 0 replies; 3+ messages in thread
From: Balbir Singh @ 2006-09-11  7:40 UTC (permalink / raw)
  To: akpm
  Cc: Jamal Hadi, Shailabh Nagar, Thomas Graf, netdev, Balbir Singh,
	linux-kernel



Fix the length passed while (un)registering cpumask. We were passing
sizeof the array, make it strlen().

Error value printed in fatal errors should be derived from the message.
The message contains an nlmsgerr embedded with an error value. We must
report that value to the user.

Signed-off-by: Balbir Singh <balbir@in.ibm.com>
---

 Documentation/accounting/getdelays.c |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff -puN Documentation/accounting/getdelays.c~taskstats-fix-delayacct-utility Documentation/accounting/getdelays.c
--- linux-2.6.18-rc6/Documentation/accounting/getdelays.c~taskstats-fix-delayacct-utility	2006-09-11 12:43:50.000000000 +0530
+++ linux-2.6.18-rc6-balbir/Documentation/accounting/getdelays.c	2006-09-11 12:46:57.000000000 +0530
@@ -285,7 +285,7 @@ int main(int argc, char *argv[])
 	if (maskset) {
 		rc = send_cmd(nl_sd, id, mypid, TASKSTATS_CMD_GET,
 			      TASKSTATS_CMD_ATTR_REGISTER_CPUMASK,
-			      &cpumask, sizeof(cpumask));
+			      &cpumask, strlen(cpumask) + 1);
 		PRINTF("Sent register cpumask, retval %d\n", rc);
 		if (rc < 0) {
 			printf("error sending register cpumask\n");
@@ -315,7 +315,8 @@ int main(int argc, char *argv[])
 		}
 		if (msg.n.nlmsg_type == NLMSG_ERROR ||
 		    !NLMSG_OK((&msg.n), rep_len)) {
-			printf("fatal reply error,  errno %d\n", errno);
+			struct nlmsgerr *err = NLMSG_DATA(&msg);
+			printf("fatal reply error,  errno %d\n", err->error);
 			goto done;
 		}
 
@@ -383,7 +384,7 @@ done:
 	if (maskset) {
 		rc = send_cmd(nl_sd, id, mypid, TASKSTATS_CMD_GET,
 			      TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK,
-			      &cpumask, sizeof(cpumask));
+			      &cpumask, strlen(cpumask) + 1);
 		printf("Sent deregister mask, retval %d\n", rc);
 		if (rc < 0)
 			err(rc, "error sending deregister cpumask\n");
_

-- 

	Balbir Singh,
	Linux Technology Center,
	IBM Software Labs

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2006-09-11  7:44 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-09-11  7:40 [RFC][PATCH -mm] Add genetlink utilities for payload length calculation Balbir Singh
2006-09-11  7:40 ` [RFC][PATCH -mm] Fix taskstats size calculation (use the new genetlink utility functions) Balbir Singh
2006-09-11  7:40 ` [RFC][PATCH -mm] Fix getdelays.c - cpumask length and error reporting Balbir Singh

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).