Ecrecover security

I have this function in a contract:

address signer = <an address>
function foo(
  uint a, 
  address b, 
  uint8 v, 
  bytes32 r, 
  bytes32 s
) external {
  require(
    ecrecover(
      keccak256(abi.encodePacked(a, b)), 
      v, 
      r, 
      s
    ) == signer
  );
}

The is a possibility to create signature without the signer PK to satisfice this function?
Do you know any list of typical errors with ecrecover?