On Fri, 8 May 2020 19:13:38 +0200
Miquel Raynal [off-list ref] wrote:
+static int anfc_len_to_steps(struct nand_chip *chip, unsigned int len)
+{
+ unsigned int steps = 1, pktsize = len;
+
+ while (pktsize > ANFC_MAX_PKT_SIZE) {
+ steps *= 2;
+ pktsize = DIV_ROUND_UP(len, steps);
+ }
Same here, you shouldn't have a round_up() but instead complain if
"len != pkt_size * steps"
if (len % 4)
return -ENOTSUPP;
if (len < ANFC_MAX_PKT_SIZE)
return len;
for (steps = 2; steps < ANFC_MAX_STEPS; steps *= 2) {
pkt_size = len / steps;
if (pkt_size <= ANFC_MAX_PKT_SIZE)
break;
}
if (pkt_size * steps != len)
return -ENOTSUPP;
return pkt_size;
+
+ if (steps > ANFC_MAX_STEPS)
+ return -ENOTSUPP;
+
+ return steps;
+}