Hi Stefan, Stefan Agner <stefan@xxxxxxxx> wrote on Fri, 19 Apr 2019 09:47:17 +0200: > Sometimes the exec_op parser does not choose the optimal pattern if > multiple patterns with optional elements are available. Since the stack > automatically splits operations in multiple exec_op calls, a non-optimal > pattern gets broken up into multiple calls. E.g. an OOB read using the > vf610 driver: > nand: executing subop: > nand: ->CMD [0x00] > nand: ->ADDR [5 cyc: 00 08 ea 94 02] > nand: ->CMD [0x30] > nand: ->WAITRDY [max 200000 ms] > nand: DATA_IN [64 B] > nand: executing subop: > nand: CMD [0x00] > nand: ADDR [5 cyc: 00 08 ea 94 02] > nand: CMD [0x30] > nand: WAITRDY [max 200000 ms] > nand: ->DATA_IN [64 B] > > However, the vf610 driver has a pattern which can execute the complete > command in a single go... > > This patch makes sure that the longest matching pattern is chosen > instead of the first (potentially only partial) match. With this > change the vf610 reads the OOB in a single exec_op call: > nand: executing subop: > nand: ->CMD [0x00] > nand: ->ADDR [5 cyc: 00 08 c0 1d 00] > nand: ->CMD [0x30] > nand: ->WAITRDY [max 200000 ms] > nand: ->DATA_IN [64 B] > > Reported-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> > Suggested-by: Boris Brezillon <boris.brezillon@xxxxxxxxxxxxx> > Tested-by: Stefan Agner <stefan@xxxxxxxx> > Signed-off-by: Stefan Agner <stefan@xxxxxxxx> > --- Applied, thanks. Miquèl ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/