From 8ea23535dcf33db941698ea18b68c8220dd15846 Mon Sep 17 00:00:00 2001 From: Oron Peled Date: Mon, 17 Jun 2013 16:26:28 +0300 Subject: [PATCH] sysfs: bugfix: shorten too long file names * In old kernels (e.g: 2.6.18) sysfs file names must be shorter then KOBJ_NAME_LEN. * Longer names are truncated and this leads to duplicate names which fails device_register() Examples: "dahdi!channels!10!10" is truncated to "dahdi!channels!10!1" * The fix shorten the names and make them fixed length. Example: "dahdi!chan!010!010" * It seems no current userspace tools rely on that name or on /dev/dahdi/channels . Signed-off-by: Tzafrir Cohen --- README | 6 ++++-- drivers/dahdi/dahdi-sysfs-chan.c | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/README b/README index 5f6087b..e432ac5 100644 --- a/README +++ b/README @@ -646,8 +646,10 @@ or dynamically through the udev system. * /dev/dahdi/ctl (196:0) - a general device file for various information and control operations on the DAHDI channels. -* /dev/dahdi/channels/N/M - A device file for channel M in span N - (M is chanpos - numbering relative to the current span). +* /dev/dahdi/chan/N/M - A device file for channel M in span N + - Both N and M are zero padded 3 digit numbers + - Both N and M start at 001 + - M is chanpos - numbering relative to the current span. * /dev/dahdi/NNN (196:NNN) - for NNN in the range 1-249. A device file for DAHDI channel NNN. It can be used to read data from the channel and write data to the channel. It is not generated by default but may diff --git a/drivers/dahdi/dahdi-sysfs-chan.c b/drivers/dahdi/dahdi-sysfs-chan.c index b77e186..4bbb9a3 100644 --- a/drivers/dahdi/dahdi-sysfs-chan.c +++ b/drivers/dahdi/dahdi-sysfs-chan.c @@ -247,7 +247,7 @@ int chan_sysfs_create(struct dahdi_chan *chan) /* * FIXME: the name cannot be longer than KOBJ_NAME_LEN */ - dev_set_name(dev, "dahdi!channels!%d!%d", span->spanno, chan->chanpos); + dev_set_name(dev, "dahdi!chan!%03d!%03d", span->spanno, chan->chanpos); dev_set_drvdata(dev, chan); dev->release = chan_release; res = device_register(dev);