greybus: Tear down devices in the reverse order
authorViresh Kumar <viresh.kumar@linaro.org>
Thu, 4 Jun 2015 12:46:45 +0000 (18:16 +0530)
committerGreg Kroah-Hartman <gregkh@google.com>
Tue, 9 Jun 2015 20:31:23 +0000 (13:31 -0700)
commit928f2abd5ff12fa4851b762df7c32e749e846b7c
tree68fb3fc47c0a657ef41471bca2709eb5ac3c9a9a
parentd51c0ffb5cd1e92884e847f2cac6935c6d866779
greybus: Tear down devices in the reverse order

Normally, its a good practice to free resources in the reverse order in
which they are allocated, so that all the dependencies can be sorted out
properly.

This is true while creating/destroying devices as well. For example
consider this scenario (I faced a crash with control protocol due to
this). For a new module, we will first create a bundle+connection for
the control cport and then create other bundles/connections after
parsing manifest.

And while destroying interface on module hot unplug, we are removing the
devices in the order they are added. And so the bundle/connection for
the control cport are destroyed first. But, control cport was still
required while destroying other bundles/connections.

To solve this problem, lets destroy the resources in the reverse order
in which they are added.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
drivers/staging/greybus/bundle.c
drivers/staging/greybus/connection.c
drivers/staging/greybus/interface.c