| From d1a2627a29667fe7c4a9d06e1579a2d65bd39bba Mon Sep 17 00:00:00 2001 |
| From: Inaky Perez-Gonzalez <inaky@linux.intel.com> |
| Date: Mon, 30 Mar 2009 17:50:17 -0700 |
| Subject: wimax: fix oops if netlink fails to add attribute |
| |
| From: Inaky Perez-Gonzalez <inaky@linux.intel.com> |
| |
| commit d1a2627a29667fe7c4a9d06e1579a2d65bd39bba upstream. |
| |
| When sending a message to user space using wimax_msg(), if nla_put() |
| fails, correctly interpret the return code from wimax_msg_alloc() as |
| an err ptr and return the error code instead of crashing (as it is |
| assuming than non-NULL means the pointer is ok). |
| |
| Signed-off-by: Inaky Perez-Gonzalez <inaky@linux.intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| net/wimax/op-msg.c | 11 ++++++----- |
| 1 file changed, 6 insertions(+), 5 deletions(-) |
| |
| --- a/net/wimax/op-msg.c |
| +++ b/net/wimax/op-msg.c |
| @@ -149,7 +149,8 @@ struct sk_buff *wimax_msg_alloc(struct w |
| } |
| result = nla_put(skb, WIMAX_GNL_MSG_DATA, size, msg); |
| if (result < 0) { |
| - dev_err(dev, "no memory to add payload in attribute\n"); |
| + dev_err(dev, "no memory to add payload (msg %p size %zu) in " |
| + "attribute: %d\n", msg, size, result); |
| goto error_nla_put; |
| } |
| genlmsg_end(skb, genl_msg); |
| @@ -302,10 +303,10 @@ int wimax_msg(struct wimax_dev *wimax_de |
| struct sk_buff *skb; |
| |
| skb = wimax_msg_alloc(wimax_dev, pipe_name, buf, size, gfp_flags); |
| - if (skb == NULL) |
| - goto error_msg_new; |
| - result = wimax_msg_send(wimax_dev, skb); |
| -error_msg_new: |
| + if (IS_ERR(skb)) |
| + result = PTR_ERR(skb); |
| + else |
| + result = wimax_msg_send(wimax_dev, skb); |
| return result; |
| } |
| EXPORT_SYMBOL_GPL(wimax_msg); |