Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1463776
| From | Alexey Brodkin <Alexey.Brodkin@synopsys.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH] ARC: Change ld.as instruction to regular ld. |
| Date | 2016-08-16 15:20 +0200 |
| Message-ID | <s6MrE-3zL-17@gated-at.bofh.it> (permalink) |
| References | <s6MrE-3zL-19@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
Hi Liav, On Tue, 2016-08-16 at 10:55 +0300, Liav Rehana wrote: > From: Liav Rehana <liavr@mellanox.com> > > The instruction ld.as takes as operands a base address and an offset, > and doesn't access the sum of these two, but the sum of the base > address and a shifted version of the offset. > This isn't what we want in that case, since it causes a bug during > the push and pop of r25, since his actual offset is given during > resume_user_mode_begin. > Thus, the use of ld solves this problem. > > Signed-off-by: Liav Rehana <liavr@mellanox.com> > --- Very nice catch! But IMHO description could be improved a little bit. Probably something like that: --------------------->8--------------------- "PT_user_r25" is offset in bytes within pt_regs structure. In its turn what "ld.as r1, [r2, x]" really does is r1 <- load_from(r2 + (x << data_size)) = load_from(r2 + x*4). But the code in question is supposed to load_from(r2 + x). This leads to obvious stack corruption. --------------------->8--------------------- Reviewed-by: Alexey Brodkin <abrodkin@synopsys.com>
Back to linux.kernel | Previous | Next — Next in thread | Find similar | Unroll thread
Re: [PATCH] ARC: Change ld.as instruction to regular ld. Alexey Brodkin <Alexey.Brodkin@synopsys.com> - 2016-08-16 15:20 +0200 Re: [PATCH] ARC: Change ld.as instruction to regular ld. Vineet Gupta <Vineet.Gupta1@synopsys.com> - 2016-08-16 17:50 +0200
csiph-web