Re: [PATCH 16/18] net: mpls: prevent bounds-check bypass via speculative execution

From: Linus Torvalds
Date: Mon Jan 08 2018 - 23:21:16 EST


On Mon, Jan 8, 2018 at 8:13 PM, Linus Torvalds
<torvalds@xxxxxxxxxxxxxxxxxxxx> wrote:
>
> # carry will be clear if idx >= max
> cmpq %idx,%max

Bah. Other way around.

cmpq %max,%idx

I'm a moron.

> # mask will be clear if carry was clear, ~0 otherwise
> sbbq %mask,%mask
>
> to generate mask directly. I might have screwed that up. Worth perhaps trying?

More importantly, worth _testing_ and fixing my hand-waving "asm like
this" crap.

But I do think that simple two-instruction cmpq/sbbq sequence could
get it right in just two trivial ALU instructions.

Linus