A troubled former mob hit man comes to his estranged son’s rescue in Run All Night.

Jimmy Conlon (Liam Neeson) has seen better days. He and his longtime best friend, Shawn Maguire (Ed Harris), grew up together and have an enduring promise to always stick together. Shawn’s seedier talents led him to become a top mob boss, after which he quickly hired his physically daunting buddy Jimmy to be his top enforcer. The job isn’t exactly one that’s free of strings or lasting effects. Jimmy now finds himself haunted by his past. Every killing works on his damaged psyche. He’s alone, and his son Mike (Joel Kinnaman) wants nothing to do with him. Alcohol is his only remaining pleasure. Now burned out, he hangs around Shawn taking handouts to keep himself going and to keep the liquor flowing.

Meanwhile, Mike may have mentally distanced himself from Jimmy, but he still lives in the old neighborhood with his wife and two young girls. He runs a local one-man independent tax service that pays the bills honestly. Everything is going along as planned until, one night, he picks up a rough pair of foreigners who ask to be taken to a location that he knows all too well — the house of Shawn’s terminally twisted son Danny (Boyd Holbrook). Of course, things go badly, leaving Mike at the center of a storm of which he has no real sense. When Jimmy finds out that Mike’s in trouble, he forces his way back into Mike’s life to do all that he can to save his son and restore what little respect that he can still muster.

The thought of another Liam Neeson action film doesn’t exactly evoke a positive response from me. That this one is directed by Jaume Collet-Serra didn’t help. He previously directed Neeson in two forgettable, similarly frenetic films — Non-Stop and Unknown. Their only saving grace is that they were marginally better than Neeson’s never-ending, always-terrible Taken franchise.

Much to my complete surprise, this wasn’t the train wreck that it could have been. The story is just compelling enough to make it interesting. The action is believable and entertaining, and the performances are almost universally solid. There’s also a great minor role from Common as a singularly focused assassin, the likes of which we haven’t seen since The Terminator.

There’s still a bit too much not to like. A subplot involving Jimmy’s arch-nemesis, a local detective played by Vincent D’Onofrio, just doesn’t feel right. There’s also a major plot hole involving a cabin that defies explanation and never gets one. Added to the fray is an unnecessarily melodramatic ending. Despite those caveats, it’s an entirely serviceable film, which is an unexpected surprise given Neeson’s most recent history.