summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Plattner <aplattner@nvidia.com>2011-04-19 14:52:40 -0700
committerAaron Plattner <aplattner@nvidia.com>2011-04-19 14:52:40 -0700
commit5b1b4af55d2cbc871f666726290d23909d7a2bfd (patch)
treee0bd8461ada437a3cf8db28eaa9b95b318bb0da6
parent5f3388a9b218978b5e2bb50a97fdd8f6df483934 (diff)
173.14.30173.14.30
-rw-r--r--DRIVER_VERSION2
-rw-r--r--backup.c14
2 files changed, 13 insertions, 3 deletions
diff --git a/DRIVER_VERSION b/DRIVER_VERSION
index 3676236..a924154 100644
--- a/DRIVER_VERSION
+++ b/DRIVER_VERSION
@@ -1 +1 @@
-173.14.28
+173.14.30
diff --git a/backup.c b/backup.c
index 465cf05..081bb27 100644
--- a/backup.c
+++ b/backup.c
@@ -49,6 +49,8 @@
#define BACKUP_DIRECTORY "/var/lib/nvidia"
#define BACKUP_LOG (BACKUP_DIRECTORY "/log")
+#define RMMOD_MODULE_NAME "nvidia"
+
/*
* XXX when uninstalling should we remove directories that were
* created by our installation?
@@ -117,7 +119,6 @@ typedef struct {
} BackupInfo;
-
static BackupInfo *read_backup_log_file(Options *op);
static void free_backup_info(BackupInfo *b);
@@ -500,7 +501,7 @@ static int do_uninstall(Options *op)
BackupLogEntry *e;
BackupInfo *b;
int i, len, ok;
- char *tmpstr;
+ char *tmpstr, *cmd;
float percent;
static const char existing_installation_is_borked[] =
@@ -658,6 +659,15 @@ static int do_uninstall(Options *op)
/* XXX what to do if this fails?... nothing */
}
+ /*
+ * attempt to unload the kernel module, but don't abort if this fails: the
+ * kernel may not have been configured with support for module unloading
+ * (Linux 2.6) or the user might have unloaded it themselves.
+ */
+ cmd = nvstrcat(op->utils[RMMOD], " ", RMMOD_MODULE_NAME, NULL);
+ run_command(op, cmd, NULL, FALSE, 0, TRUE);
+ nvfree(cmd);
+
run_distro_hook(op, "post-uninstall");
free_backup_info(b);