Linux assigns an fe80::/64 address to an interface. Shouldn't that be fe80::/10?

The address space allocated to link-local addresses is fe80::/10, but the next 54 bits are defined to be all zeroes, so the effective range is fe80::/64. Which puts it in line with the usual custom for IPv6 addresses.

RFC 4291:

2.5.6.  Link-Local IPv6 Unicast Addresses

   Link-Local addresses are for use on a single link.  Link-Local
   addresses have the following format:

   |   10     |
   |  bits    |         54 bits         |          64 bits           |
   +----------+-------------------------+----------------------------+
   |1111111010|           0             |       interface ID         |
   +----------+-------------------------+----------------------------+