Doesn't work for me either; I get "Permission denied" at the first exec step. Glibc 2.12.1 here (Gentoo).
You'll have to find another binary that has the SUID bit set and is readable. For example, in my system /bin/mount does the job. Still, in the last step I get the same error as reported by several other users (Inconsistency detected...)
TL;DR
1. cause STDERR to block
2. run the SUID binary in the background in a way that triggers ld to try to write to STDERR causing it to block.
3. Replace /tmp/exploit with your binary
4. eliminate the blocking condition on STDERR.
5. ld will continue on using the $ORIGIN value.