diff --git a/drivers/firewire/fw-cdev.c b/drivers/firewire/fw-cdev.c
index 3d816a6395cd2c575b33db3023b133fef4e557df..b93ad9c0a0d0625723b879708c544cdd98aa16ba 100644
--- a/drivers/firewire/fw-cdev.c
+++ b/drivers/firewire/fw-cdev.c
@@ -1386,12 +1386,12 @@ static int fw_device_op_release(struct inode *inode, struct file *file)
 	list_del(&client->link);
 	mutex_unlock(&client->device->client_list_mutex);
 
-	if (client->buffer.pages)
-		fw_iso_buffer_destroy(&client->buffer, client->device->card);
-
 	if (client->iso_context)
 		fw_iso_context_destroy(client->iso_context);
 
+	if (client->buffer.pages)
+		fw_iso_buffer_destroy(&client->buffer, client->device->card);
+
 	/* Freeze client->resource_idr and client->event_list */
 	spin_lock_irq(&client->lock);
 	client->in_shutdown = true;