mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
net, ipv6: convert ipv6_txoptions.refcnt from atomic_t to refcount_t
refcount_t type and corresponding API should be used instead of atomic_t when the variable is used as a reference counter. This allows to avoid accidental refcounter overflows that might lead to use-after-free situations. Signed-off-by: Elena Reshetova <[email protected]> Signed-off-by: Hans Liljestrand <[email protected]> Signed-off-by: Kees Cook <[email protected]> Signed-off-by: David Windsor <[email protected]> Signed-off-by: David S. Miller <[email protected]>
This commit is contained in:
parent
25f4535a94
commit
0aeea21ada
3 changed files with 7 additions and 6 deletions
|
|
@ -971,7 +971,7 @@ ipv6_dup_options(struct sock *sk, struct ipv6_txoptions *opt)
|
|||
*((char **)&opt2->dst1opt) += dif;
|
||||
if (opt2->srcrt)
|
||||
*((char **)&opt2->srcrt) += dif;
|
||||
atomic_set(&opt2->refcnt, 1);
|
||||
refcount_set(&opt2->refcnt, 1);
|
||||
}
|
||||
return opt2;
|
||||
}
|
||||
|
|
@ -1056,7 +1056,7 @@ ipv6_renew_options(struct sock *sk, struct ipv6_txoptions *opt,
|
|||
return ERR_PTR(-ENOBUFS);
|
||||
|
||||
memset(opt2, 0, tot_len);
|
||||
atomic_set(&opt2->refcnt, 1);
|
||||
refcount_set(&opt2->refcnt, 1);
|
||||
opt2->tot_len = tot_len;
|
||||
p = (char *)(opt2 + 1);
|
||||
|
||||
|
|
|
|||
|
|
@ -505,7 +505,7 @@ sticky_done:
|
|||
break;
|
||||
|
||||
memset(opt, 0, sizeof(*opt));
|
||||
atomic_set(&opt->refcnt, 1);
|
||||
refcount_set(&opt->refcnt, 1);
|
||||
opt->tot_len = sizeof(*opt) + optlen;
|
||||
retv = -EFAULT;
|
||||
if (copy_from_user(opt+1, optval, optlen))
|
||||
|
|
|
|||
Loading…
Reference in a new issue