How do I get my upvector to match a surface normal?

I’ve created a floating pawn that the player can move around the map. I’m already doing a line trace from the pawn to the ground underneath, so I’ve go the returned normal from that trace. I want to rotate the pawn so that the up vector matches the surface normal, but I can’t figure out how I would do that. Basically if the pawn starts to go up a ramp I want the front of pawn to raise to match the angle of the ramp. I only want to change the pitch and the roll of the pawn. I don’t want to affect the yaw. Right now the ship is physics based, so I’d rather add a rotation each frame than set any rotation. If there’s a way to do this in blueprints it would be preferable.

I would do something like this:

Ignore the trace parameters those are for a Sphere I had in my world positioned at 0,0,0

The problem with that solution is that it sets the rotation instead of adding forces, and it doesn’t take into account the current yaw, that I want to keep, but I thin it’s a step in the right direction. Thanks