At each step, the current node must point backward:
$\texttt{curr->next = prev;}$
Then the three pointers move forward:
prev = curr;
curr = next;
if (next != NULL) next = next->next;
Option B does exactly this.
The other options either reverse the wrong link or update $\texttt{curr}$ before fixing its $\texttt{next}$.