[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1034264: marked as done (bullseye-pu: package nvidia-modprobe/470.182.03-1)



Your message dated Sat, 29 Apr 2023 10:54:14 +0100
with message-id <502b8fb37ece620c9723446611a9287974ba5a0c.camel@adam-barratt.org.uk>
and subject line Closing p-u requests for fixes included in 11.7
has caused the Debian Bug report #1034264,
regarding bullseye-pu: package nvidia-modprobe/470.182.03-1
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
1034264: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1034264
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
Tags: bullseye
User: release.debian.org@packages.debian.org
Usertags: pu

Hi,

along with the nvidia-graphics-drivers* packages, I'd like to upgrade
nvidia-modprobe to a new upstream release this time, too.
It's unusual that nvidia-modprobe sees any updates (besides the version
bump) in the older release branches when the corresponding driver
package gets updated, so in order not to have an nvidia-modprobe that
unneccessarily deviates from upstream behavior, lets update that, too.

The corresponding change has been cherry-picked into sid (there is no
530 release yet that includes it, since the last 530 release is a week
older than the 525/470/450 releases that included this change). It is not
yet in bookworm.

+nvidia-modprobe (470.182.03-1) bullseye; urgency=medium
+
+  * New upstream release.
+    - Updated nvidia-modprobe to create symbolic links in /dev/char when
+      creating the /dev/nvidia* device nodes. This resolves an issue that
+      prevented the device nodes from working with newer versions of runc:
+      https://github.com/opencontainers/runc/issues/3708
+  * Update Lintian overrides.
+  * Upload to bullseye.
+
+ -- Andreas Beckmann <anbe@debian.org>  Tue, 11 Apr 2023 22:21:56 +0200


Andreas
diff --git a/debian/changelog b/debian/changelog
index 5eca61c..b3176cc 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,15 @@
+nvidia-modprobe (470.182.03-1) bullseye; urgency=medium
+
+  * New upstream release.
+    - Updated nvidia-modprobe to create symbolic links in /dev/char when
+      creating the /dev/nvidia* device nodes. This resolves an issue that
+      prevented the device nodes from working with newer versions of runc:
+      https://github.com/opencontainers/runc/issues/3708
+  * Update Lintian overrides.
+  * Upload to bullseye.
+
+ -- Andreas Beckmann <anbe@debian.org>  Tue, 11 Apr 2023 22:21:56 +0200
+
 nvidia-modprobe (470.103.01-1~deb11u1) bullseye; urgency=medium
 
   * Rebuild for bullseye.
diff --git a/debian/copyright b/debian/copyright
index ff0d5ff..26ebb3f 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -9,7 +9,8 @@ Disclaimer:
  NVIDIA drivers in non-free.
 
 Files: *
-Copyright: Copyright (C) 2004-2017 NVIDIA Corporation
+Copyright:
+ Copyright (C) 2004-2023 NVIDIA Corporation
 License: Expat
 
 Files: modprobe-utils/pci-enum.h
@@ -25,7 +26,8 @@ Copyright: (C) Copyright IBM Corporation 2006
 License: Expat
 
 Files: debian/*
-Copyright: © 2014-2022 Andreas Beckmann <anbe@debian.org>
+Copyright:
+ © 2014-2023 Andreas Beckmann <anbe@debian.org>
 License: Expat
 
 License: Expat
diff --git a/debian/gbp.conf b/debian/gbp.conf
index f5b3a2c..47d7377 100644
--- a/debian/gbp.conf
+++ b/debian/gbp.conf
@@ -1,2 +1,5 @@
+[DEFAULT]
+debian-branch = bullseye
+
 [import-orig]
 upstream-vcs-tag = %(version)s
diff --git a/debian/nvidia-modprobe.lintian-overrides b/debian/nvidia-modprobe.lintian-overrides
index ecc59fc..d19f35e 100644
--- a/debian/nvidia-modprobe.lintian-overrides
+++ b/debian/nvidia-modprobe.lintian-overrides
@@ -1 +1 @@
-elevated-privileges usr/bin/nvidia-modprobe 4755 root/root
+elevated-privileges 4755 root/root [usr/bin/nvidia-modprobe]
diff --git a/debian/source/lintian-overrides b/debian/source/lintian-overrides
index 8ebed74..f462e54 100644
--- a/debian/source/lintian-overrides
+++ b/debian/source/lintian-overrides
@@ -1,2 +1,2 @@
 # upstream provides no signatures
-debian-watch-does-not-check-gpg-signature
+debian-watch-does-not-check-openpgp-signature
diff --git a/modprobe-utils/nvidia-modprobe-utils.c b/modprobe-utils/nvidia-modprobe-utils.c
index 7437751..1a2144f 100644
--- a/modprobe-utils/nvidia-modprobe-utils.c
+++ b/modprobe-utils/nvidia-modprobe-utils.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, NVIDIA CORPORATION.
+ * Copyright (c) 2013-2023, NVIDIA CORPORATION.
  *
  * Permission is hereby granted, free of charge, to any person
  * obtaining a copy of this software and associated documentation
@@ -42,6 +42,7 @@
 #include "nvidia-modprobe-utils.h"
 #include "pci-enum.h"
 
+#define NV_DEV_PATH "/dev/"
 #define NV_PROC_MODPROBE_PATH "/proc/sys/kernel/modprobe"
 #define NV_PROC_MODULES_PATH "/proc/modules"
 #define NV_PROC_DEVICES_PATH "/proc/devices"
@@ -502,6 +503,75 @@ int nvidia_get_file_state(int minor)
     return state;
 }
 
+/*
+ * Symbolically link the /dev/char/<major:minor> file to the given
+ * device node.
+ */
+static int symlink_char_dev(int major, int minor, const char *dev_path)
+{
+    char symlink_path[NV_MAX_CHARACTER_DEVICE_FILE_STRLEN];
+    char dev_rel_path[NV_MAX_CHARACTER_DEVICE_FILE_STRLEN];
+    struct stat link_status;
+    struct stat dev_status;
+    int ret;
+
+    ret = snprintf(symlink_path, NV_MAX_CHARACTER_DEVICE_FILE_STRLEN,
+                   NV_CHAR_DEVICE_NAME, major, minor);
+
+    if (ret < 0 || ret >= NV_MAX_CHARACTER_DEVICE_FILE_STRLEN)
+    {
+        return 0;
+    }
+
+    /* Verify that the target device node exists and is a character device. */
+    if (stat(dev_path, &dev_status) != 0 || !S_ISCHR(dev_status.st_mode))
+    {
+        return 0;
+    }
+
+    /* Verify the device path prefix is as expected. */
+    if (strncmp(dev_path, NV_DEV_PATH, strlen(NV_DEV_PATH)) != 0)
+    {
+        return 0;
+    }
+
+    /*
+     * Create the relative path for the symlink by replacing "/dev/" prefix in
+     * the path with "../", to match existing links in the /dev/char directory.
+     */
+    ret = snprintf(dev_rel_path, NV_MAX_CHARACTER_DEVICE_FILE_STRLEN,
+                   "../%s", dev_path + strlen(NV_DEV_PATH));
+
+    if (ret < 0 || ret >= NV_MAX_CHARACTER_DEVICE_FILE_STRLEN)
+    {
+        return 0;
+    }
+
+    /*
+     * An existing link may not point at the target device, so remove it.
+     * Any error is discarded since the failure checks below will handle
+     * the problematic cases.
+     */
+    (void)remove(symlink_path);
+
+    ret = symlink(dev_rel_path, symlink_path);
+
+    /*
+     * If the symlink(3) failed, we either don't have permission to create it,
+     * or the file already exists -- our remove(3) call above failed. In this
+     * case, we return success only if the link exists and matches the target
+     * device (stat(2) will follow the link).
+     */
+    if (ret < 0 &&
+        (stat(symlink_path, &link_status) != 0 ||
+         link_status.st_ino != dev_status.st_ino))
+    {
+        return 0;
+    }
+
+    return 1;
+}
+
 /*
  * Attempt to create the specified device file with the specified major
  * and minor number.  If proc_path is specified, scan it for custom file
@@ -532,7 +602,7 @@ static int mknod_helper(int major, int minor, const char *path,
 
     if (modification_allowed != 1)
     {
-        return 1;
+        return symlink_char_dev(major, minor, path);
     }
 
     state = get_file_state_helper(path, major, minor,
@@ -542,7 +612,7 @@ static int mknod_helper(int major, int minor, const char *path,
         nvidia_test_file_state(state, NvDeviceFileStateChrDevOk) &&
         nvidia_test_file_state(state, NvDeviceFileStatePermissionsOk))
     {
-        return 1;
+        return symlink_char_dev(major, minor, path);
     }
 
     /* If the stat(2) above failed, we need to create the device file. */
@@ -594,10 +664,9 @@ static int mknod_helper(int major, int minor, const char *path,
         return 0;
     }
 
-    return 1;
+    return symlink_char_dev(major, minor, path);
 }
 
-
 /*
  * Attempt to create a device file with the specified minor number for
  * the specified NVIDIA module instance.
diff --git a/modprobe-utils/nvidia-modprobe-utils.h b/modprobe-utils/nvidia-modprobe-utils.h
index 924f7c3..ebc01e1 100644
--- a/modprobe-utils/nvidia-modprobe-utils.h
+++ b/modprobe-utils/nvidia-modprobe-utils.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, NVIDIA CORPORATION.
+ * Copyright (c) 2013-2023, NVIDIA CORPORATION.
  *
  * Permission is hereby granted, free of charge, to any person
  * obtaining a copy of this software and associated documentation
@@ -46,6 +46,8 @@
 #define NV_CAPS_MODULE_NAME "nvidia-caps"
 #define NV_CAP_DEVICE_NAME "/dev/" NV_CAPS_MODULE_NAME "/nvidia-cap%d"
 
+#define NV_CHAR_DEVICE_NAME "/dev/char/%d:%d"
+
 #if defined(NV_LINUX)
 
 typedef enum
diff --git a/version.mk b/version.mk
index 061d452..2953b73 100644
--- a/version.mk
+++ b/version.mk
@@ -1,4 +1,4 @@
-NVIDIA_VERSION = 470.103.01
+NVIDIA_VERSION = 470.182.03
 
 # This file.
 VERSION_MK_FILE := $(lastword $(MAKEFILE_LIST))

--- End Message ---
--- Begin Message ---
Package: release.debian.org
Version: 11.7

Hi,

Each of the updates referred to in these requests was included in this
morning's 11.7 point release.

Regards,

Adam

--- End Message ---

Reply to: