Smoke constrained by objects
Have you checked the boundaries of the Smoke Domain?

The Smoke Domain is a cube that determines the limits of the simulation of the smoke. It cannot escape it. The cube can be resized and it's shape changed, of course.

Here's the relevant page from the Blender Manual for 2.79.