[Please do not top-post] On Thu 30-05-19 13:20:01, Dianzhang Chen wrote: > It is possible that a CPU mis-predicts the conditional branch, and > speculatively loads size_index[size_index_elem(size)], even if size >192. > Although this value will subsequently be discarded, > but it can not drop all the effects of speculative execution, > such as the presence or absence of data in caches. Such effects may > form side-channels which can be > observed to extract secret information.
I understand the general mechanism of spectre v1. What I was asking for is an example of where userspace directly controls the allocation size as this is usually bounded to an in kernel object size. I can see how and N * sizeof(object) where N is controlled by the userspace could be the target. But calling that out explicitly would be appreciated. > As for "why this particular path a needs special treatment while other > size branches are ok", > i think the other size branches need to treatment as well at first place, > but in code `index = fls(size - 1)` the function `fls` will make the > index at specific range, > so it can not use `kmalloc_caches[kmalloc_type(flags)][index]` to load > arbitury data. > But, still it may load some date that it shouldn't, if necessary, i > think can add array_index_nospec as well. Please mention that in the changelog as well. > On Thu, May 30, 2019 at 1:49 AM Michal Hocko <mho...@kernel.org> wrote: > > > > On Thu 30-05-19 00:39:53, Dianzhang Chen wrote: > > > It's come from `192+1`. > > > > > > > > > The more code fragment is: > > > > > > > > > if (size <= 192) { > > > > > > if (!size) > > > > > > return ZERO_SIZE_PTR; > > > > > > size = array_index_nospec(size, 193); > > > > > > index = size_index[size_index_elem(size)]; > > > > > > } > > > > OK I see, I could have looked into the code, my bad. But I am still not > > sure what is the potential exploit scenario and why this particular path > > a needs special treatment while other size branches are ok. Could you be > > more specific please? > > -- > > Michal Hocko > > SUSE Labs -- Michal Hocko SUSE Labs