[PATCH] pci: Repair pci_save/restore_state so we can restore one save many times.
authorEric W. Biederman <ebiederm@xmission.com>
Thu, 8 Mar 2007 20:06:13 +0000 (13:06 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Mon, 12 Mar 2007 23:31:50 +0000 (16:31 -0700)
commit9f35575dfc172f0a93fb464761883c8f49599b7a
tree5459681e96de3914a95c4993fc6f54b0e3b2ffee
parent392ee1e6dd901db6c4504617476f6442ed91f72d
[PATCH] pci: Repair pci_save/restore_state so we can restore one save many times.

Because we do not reserve space for the pci-x and pci-e state in struct
pci dev we need to dynamically allocate it.  However because we need
to support restore being called multiple times after a single save
it is never safe to free the buffers we have allocated to hold the
state.

So this patch modifies the save routines to first check to see
if we have already allocated a state buffer before allocating
a new one.  Then the restore routines are modified to not free
the state after restoring it.  Simple and it fixes some subtle
error path handling bugs, that are hard to test for.

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Acked-by: Auke Kok <auke-jan.h.kok@intel.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/pci/pci.c
include/linux/pci.h