A Soldier's Story
(1984)

Initially, everyone think Sgt. Waters (Adolph Caesar) was killed by the Ku Klux Klan. Later, Captain Davenport  (Howard Rollins) suspects two racist white officers.

But Davenport's investigation reveals that the likeliest suspects are the black men in Waters' own unit. Though Waters was black himself, he was a racist and treated his men horribly, because he hated Southern black men who conformed to racist stereotypes. In particular, he despised C.J. Memphis (Larry Riley), a grinning, jive talking "Uncle Tom." Waters framed C.J. for murder, and drove him to suicide.

Private Smalls tries to go AWOL by jumping on a freight train, but he is caught. When Davenport interrogates him, Smalls reveals that he and Private Peterson (Denzel Washington) had found a drunk Sgt. Waters in the middle of the road, where Lieutenant Byrd (Wings Hauser) had left him. Peterson, who hated Waters for what he'd done to C.J., shot and killed Waters, thinking the Klan would be blamed.

Peterson is captured just after Smalls' makes his confession, and charged with murder.

The next day, as Captain Davenport leaves Fort Neal, he sees a parade of proud black soldiers. who are finally being given the chance to fight against the Germans in Europe.

Thanks John L!