The tower_probe function in drivers/usb/misc/legousbtower.c in the Linux kernel before 4.8.1 allows local users (who are physically proximate for inserting a crafted USB device) to gain privileges by leveraging a write-what-where condition that occurs after a race condition and a NULL pointer dereference.
https://usn.ubuntu.com/3583-2/
https://usn.ubuntu.com/3583-1/
https://github.com/torvalds/linux/commit/2fae9e5a7babada041e2e161699ade2447a01989
https://bugzilla.redhat.com/show_bug.cgi?id=1505905
http://www.securityfocus.com/bid/101790