# Re: \[PATCH 6/7\] sock, cgroup: add sock-\>sk\_cgroup

- From: Daniel Wagner \<hidden\>
- Date: 2015-11-20 11:04:15 
- List: netdev
- Page: https://ratatoskr.run/netdev/2015/11/4625014
- Thread: https://ratatoskr.run/netdev/2015/11/4624449/t.md

```text
Hi Tejun,

On 11/19/2015 07:52 PM, Tejun Heo wrote:
> +/*
> + * There's a theoretical window where the following accessors race with
> + * updaters and return part of the previous pointer as the prioidx or
> + * classid.  Such races are short-lived and the result isn't critical.
> + */
>  static inline u16 sock_cgroup_prioidx(struct sock_cgroup_data *skcd)
>  {
> -	return skcd->prioidx;
> +	return (skcd->is_data & 1) ? skcd->prioidx : 1;
>  }
>  
>  static inline u32 sock_cgroup_classid(struct sock_cgroup_data *skcd)
>  {
> -	return skcd->classid;
> +	return (skcd->is_data & 1) ? skcd->classid : 0;
>  }


I still try to understand what the code does, hence this stupid question:

Why is sock_cgroup_prioidx() returning 1 if is not data and
sock_cgroup_classid() a 0?

thanks,
daniel
```
