# Re: \[PATCH 0/24\] make atomic\_read() behave consistently across all architectures

- From: Paul Mackerras \<hidden\>
- Date: 2007-08-16 02:06:39 
- List: netdev
- Page: https://ratatoskr.run/netdev/2007/08/994940
- Thread: https://ratatoskr.run/linux-arch/2007/08/991524/t/2.md

```text
Herbert Xu writes:

> See sk_stream_mem_schedule in net/core/stream.c:
> 
>         /* Under limit. */
>         if (atomic_read(sk->sk_prot->memory_allocated) < sk->sk_prot->sysctl_mem[0]) {
>                 if (*sk->sk_prot->memory_pressure)
>                         *sk->sk_prot->memory_pressure = 0;
>                 return 1;
>         }
> 
>         /* Over hard limit. */
>         if (atomic_read(sk->sk_prot->memory_allocated) > sk->sk_prot->sysctl_mem[2]) {
>                 sk->sk_prot->enter_memory_pressure();
>                 goto suppress_allocation;
>         }
> 
> We don't need to reload sk->sk_prot->memory_allocated here.

Are you sure?  How do you know some other CPU hasn't changed the value
in between?

Paul.
```
