2.6.31-stable review patch. If anyone has any objections, please let us know.

------------------From: Chris Wilson <chris@chris-wilson.co.uk>

commit 7e61615857c6fb3afbcb43f5c4e97511a923f5a8 upstream.

drm_ht_remove_item() does not handle removing an absent item and the hlistin particular is incorrectly initialised. The easy remedy is simply skipcalling i915_gem_free_mmap_offset() unless we have actually created theoffset and associated ht entry.

This also fixes the mishandling of a partially constructed offset whichleaves pointers initialized after freeing them along thei915_gem_create_mmap_offset() error paths.