When reading from the SID device using the normal memory access method, we upload our "readl" routine (via fel_readl_n()), which expects a number of words to read. However length is given in bytes, so we read four times as much, and overflow our key buffer, clobbering the return address. This is typically fatal:
When reading from the SID device using the normal memory access method, we upload our "readl" routine (via fel_readl_n()), which expects a number of words to read. However length is given in bytes, so we read four times as much, and overflow our key buffer, clobbering the return address. This is typically fatal:
Fix this by giving the number of (32-bit) words instead. We already checked that length is a multiple of 4, so we can just divide.