On Sat, 2017-05-20 at 21:57 +0800, yuan linyu wrote:
> From: yuan linyu <[email protected]>
[]
> diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c
[]
> @@ -240,13 +240,15 @@ struct ndisc_options *ndisc_parse_options(const struct
> net_device *dev,
> "%s: duplicated ND6 option found:
> type=%d\n",
> __func__, nd_opt->nd_opt_type);
> } else {
> - ndopts->nd_opt_array[nd_opt->nd_opt_type] =
> nd_opt;
> + ndopts->nd_opt_array[nd_opt->nd_opt_type] =
> + nd_opt;
> }
> break;
> case ND_OPT_PREFIX_INFO:
> ndopts->nd_opts_pi_end = nd_opt;
> if (!ndopts->nd_opt_array[nd_opt->nd_opt_type])
> - ndopts->nd_opt_array[nd_opt->nd_opt_type] =
> nd_opt;
> + ndopts->nd_opt_array[nd_opt->nd_opt_type] =
> + nd_opt;
> break;
> #ifdef CONFIG_IPV6_ROUTE_INFO
> case ND_OPT_ROUTE_INFO:
If you are going to do these 80 column line length changes,
(and they are not really useful or necessary here), perhaps
it'd be better to use a temporary to reduce the line length.
Something like:
---
net/ipv6/ndisc.c | 20 ++++++++++++++------
1 file changed, 14 insertions(+), 6 deletions(-)
diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c
index d310dc41209a..a8521bc86795 100644
--- a/net/ipv6/ndisc.c
+++ b/net/ipv6/ndisc.c
@@ -234,20 +234,28 @@ struct ndisc_options *ndisc_parse_options(const struct
net_device *dev,
case ND_OPT_TARGET_LL_ADDR:
case ND_OPT_MTU:
case ND_OPT_NONCE:
- case ND_OPT_REDIRECT_HDR:
- if (ndopts->nd_opt_array[nd_opt->nd_opt_type]) {
+ case ND_OPT_REDIRECT_HDR: {
+ struct nd_opt_hdr **hdr;
+
+ hdr = &ndopts->nd_opt_array[nd_opt->nd_opt_type];
+ if (*hdr) {
ND_PRINTK(2, warn,
"%s: duplicated ND6 option found:
type=%d\n",
__func__, nd_opt->nd_opt_type);
} else {
- ndopts->nd_opt_array[nd_opt->nd_opt_type] =
nd_opt;
+ *hdr = nd_opt;
}
break;
- case ND_OPT_PREFIX_INFO:
+ }
+ case ND_OPT_PREFIX_INFO: {
+ struct nd_opt_hdr **hdr;
+
+ hdr = &ndopts->nd_opt_array[nd_opt->nd_opt_type];
ndopts->nd_opts_pi_end = nd_opt;
- if (!ndopts->nd_opt_array[nd_opt->nd_opt_type])
- ndopts->nd_opt_array[nd_opt->nd_opt_type] =
nd_opt;
+ if (!*hdr)
+ *hdr = nd_opt;
break;
+ }
#ifdef CONFIG_IPV6_ROUTE_INFO
case ND_OPT_ROUTE_INFO:
ndopts->nd_opts_ri_end = nd_opt;