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

Bug#1040765: marked as done (bookworm-pu: package nvidia-modprobe/535.54.03-1~deb12u1)



Your message dated Sat, 22 Jul 2023 13:19:43 +0000
with message-id <E1qNCWN-005rsT-4Z@coccia.debian.org>
and subject line Released with 12.1
has caused the Debian Bug report #1040765,
regarding bookworm-pu: package nvidia-modprobe/535.54.03-1~deb12u1
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.)


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

[ Reason ]
In prepararion to upgrading nvidia-graphics-drivers(-tesla) to the 535
series (a new LTSB branch announced last week and supported until
June 2026, i.e. sufficient for bookworm) I'd like to update
nvidia-modprobe to a new upstream release.

[ Impact ]
The 525 series currently in sid/bookworm is only supported until the end
of this year.

[ Tests ]
n/a

[ Risks ]
Low. No functional changes.

[ Checklist ]
  [x] *all* changes are documented in the d/changelog
  [x] I reviewed all changes and I approve them
  [x] attach debdiff against the package in (old)stable
  [x] the issue is verified as fixed in unstable

[ Changes ]
Except for the version bump there are no code changes. The backported
patch is now part of the upstream release. This is a rebuild of the
package from sid with no further changes.

[ Other info ]
nvidia-graphics-drivers has a versioned dependency on nvidia-modprobe
(>= $MAJOR_VERSION) to ensure we don't miss (again) the rare cases where
nvidia-modprobe actually had code changes. That version works with all
driver series, so we can start with uploading nvidia-modprobe even if
the driver packages are not yet ready.


Andreas
diff --git a/debian/changelog b/debian/changelog
index 0ad05af..9ce25ce 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,15 @@
+nvidia-modprobe (535.54.03-1~deb12u1) bookworm; urgency=medium
+
+  * Rebuild for bookworm.
+
+ -- Andreas Beckmann <anbe@debian.org>  Mon, 10 Jul 2023 00:10:07 +0200
+
+nvidia-modprobe (535.54.03-1) unstable; urgency=medium
+
+  * New upstream release.
+
+ -- Andreas Beckmann <anbe@debian.org>  Sun, 02 Jul 2023 20:36:35 +0200
+
 nvidia-modprobe (530.30.02-2) unstable; urgency=medium
 
   * Updated nvidia-modprobe to create symbolic links in /dev/char when
@@ -73,6 +85,18 @@ nvidia-modprobe (495.44-1) experimental; urgency=medium
 
  -- Andreas Beckmann <anbe@debian.org>  Sun, 07 Nov 2021 09:19:56 +0100
 
+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>  Sun, 16 Apr 2023 21:40:37 +0200
+
 nvidia-modprobe (470.103.01-1~deb11u1) bullseye; urgency=medium
 
   * Rebuild for bullseye.
diff --git a/debian/copyright b/debian/copyright
index 415c397..26ebb3f 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -9,7 +9,8 @@ Disclaimer:
  NVIDIA drivers in non-free.
 
 Files: *
-Copyright: Copyright (C) 2004-2021 NVIDIA Corporation
+Copyright:
+ Copyright (C) 2004-2023 NVIDIA Corporation
 License: Expat
 
 Files: modprobe-utils/pci-enum.h
diff --git a/debian/patches/dev-char-symlink.patch b/debian/patches/dev-char-symlink.patch
deleted file mode 100644
index b7e7994..0000000
--- a/debian/patches/dev-char-symlink.patch
+++ /dev/null
@@ -1,151 +0,0 @@
-commit ec487af278c3603f785e6829023dc1675c66a236
-Author: Aaron Plattner <aplattner@nvidia.com>
-Date:   Thu Mar 30 11:10:10 2023 -0700
-
-    525.105.17
-
-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/debian/patches/series b/debian/patches/series
index 64a3dbb..7cad60d 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,2 @@
 setuid.patch
 repro.patch
-dev-char-symlink.patch
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 f317cd6..bc5d21a 100644
--- a/version.mk
+++ b/version.mk
@@ -1,4 +1,4 @@
-NVIDIA_VERSION = 530.30.02
+NVIDIA_VERSION = 535.54.03
 
 # This file.
 VERSION_MK_FILE := $(lastword $(MAKEFILE_LIST))

--- End Message ---
--- Begin Message ---
Version: 12.1

The upload requested in this bug has been released as part of 12.1.

--- End Message ---

Reply to: