Skip to content

Commit

Permalink
drbd: fix for truncated minor number in callback command line
Browse files Browse the repository at this point in the history
The command line parameter the kernel module uses to communicate the
device minor to userland helper is flawed in a way that the device
indentifier "minor-%d" is being truncated to minors with a maximum
of 5 digits.

But DRBD 8.4 allows 2^20 == 1048576 minors,
thus a minimum of 7 digits must be supported.

Reported by Veit Wahlich on drbd-dev.

Signed-off-by: Lars Ellenberg <[email protected]>
Signed-off-by: Jens Axboe <[email protected]>
  • Loading branch information
lge authored and axboe committed Jun 14, 2016
1 parent 1b228c9 commit 0982368
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions drivers/block/drbd/drbd_nl.c
Original file line number Diff line number Diff line change
Expand Up @@ -343,7 +343,7 @@ int drbd_khelper(struct drbd_device *device, char *cmd)
(char[20]) { }, /* address family */
(char[60]) { }, /* address */
NULL };
char mb[12];
char mb[14];
char *argv[] = {usermode_helper, cmd, mb, NULL };
struct drbd_connection *connection = first_peer_device(device)->connection;
struct sib_info sib;
Expand All @@ -352,7 +352,7 @@ int drbd_khelper(struct drbd_device *device, char *cmd)
if (current == connection->worker.task)
set_bit(CALLBACK_PENDING, &connection->flags);

snprintf(mb, 12, "minor-%d", device_to_minor(device));
snprintf(mb, 14, "minor-%d", device_to_minor(device));
setup_khelper_env(connection, envp);

/* The helper may take some time.
Expand Down

0 comments on commit 0982368

Please sign in to comment.