diff mbox

[v1,1/1] package/busybox: support spaces in module aliases in mdev

Message ID 1467399379-945-1-git-send-email-andriy.shevchenko@linux.intel.com
State Accepted
Headers show

Commit Message

Andy Shevchenko July 1, 2016, 6:56 p.m. UTC
The new change which enabled automatic module loading on boot does not handle
the cases when module alias includes spaces. It prevents modules to be loaded
since script fails:

  % find /sys/ -name modalias | xargs sort -u
  sort: /sys/devices/platform/Fixed: No such file or directory

First alias in question is "platform:Fixed MDIO bus".

Amend the script to support above like cases.

Fixes: 07f46c2b6dae ("package/busybox: support automatic module loading with mdev")
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 package/busybox/S10mdev | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Thomas Petazzoni July 1, 2016, 8:54 p.m. UTC | #1
Hello,

On Fri,  1 Jul 2016 21:56:19 +0300, Andy Shevchenko wrote:
> The new change which enabled automatic module loading on boot does not handle
> the cases when module alias includes spaces. It prevents modules to be loaded
> since script fails:
> 
>   % find /sys/ -name modalias | xargs sort -u
>   sort: /sys/devices/platform/Fixed: No such file or directory
> 
> First alias in question is "platform:Fixed MDIO bus".
> 
> Amend the script to support above like cases.
> 
> Fixes: 07f46c2b6dae ("package/busybox: support automatic module loading with mdev")
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

Thanks for this patch. However, I have one question below.

> -	find /sys/ -name modalias | xargs sort -u | xargs modprobe -abq
> +	find /sys -name modalias -print0 | xargs -0 sort -u | while read ma; do

Why is /sys/ changed to /sys ?

Is it because of the sort -u that you cannot do another xargs -0 for
the modprobe (which would look nice that the "while read ... done"
loop) ?

Thanks,

Thomas
Yann E. MORIN July 1, 2016, 9:53 p.m. UTC | #2
Andy, Thomas, All,

On 2016-07-01 22:54 +0200, Thomas Petazzoni spake thusly:
> On Fri,  1 Jul 2016 21:56:19 +0300, Andy Shevchenko wrote:
> > The new change which enabled automatic module loading on boot does not handle
> > the cases when module alias includes spaces. It prevents modules to be loaded
> > since script fails:
> > 
> >   % find /sys/ -name modalias | xargs sort -u
> >   sort: /sys/devices/platform/Fixed: No such file or directory
> > 
> > First alias in question is "platform:Fixed MDIO bus".
> > 
> > Amend the script to support above like cases.
> > 
> > Fixes: 07f46c2b6dae ("package/busybox: support automatic module loading with mdev")
> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> 
> Thanks for this patch. However, I have one question below.
> 
> > -	find /sys/ -name modalias | xargs sort -u | xargs modprobe -abq
> > +	find /sys -name modalias -print0 | xargs -0 sort -u | while read ma; do
> 
> Why is /sys/ changed to /sys ?
> 
> Is it because of the sort -u that you cannot do another xargs -0 for
> the modprobe (which would look nice that the "while read ... done"
> loop) ?

sort has a -z option to output with zero-teminated lines instead of \n.
So we could do (almost untested):

    find /sys/ -name modalias -print0 |xargs -0 sort -u -z |xargs -0 modprobe -abq

Note: the -z option to sort in Busybox depends on SORT_BIG, which is
enabled in out busybox bundled configuration, so we can use it.

Regards,
Yann E. MORIN.
Thomas Petazzoni July 2, 2016, 11:16 a.m. UTC | #3
Hello,

On Fri,  1 Jul 2016 21:56:19 +0300, Andy Shevchenko wrote:
> The new change which enabled automatic module loading on boot does not handle
> the cases when module alias includes spaces. It prevents modules to be loaded
> since script fails:
> 
>   % find /sys/ -name modalias | xargs sort -u
>   sort: /sys/devices/platform/Fixed: No such file or directory
> 
> First alias in question is "platform:Fixed MDIO bus".
> 
> Amend the script to support above like cases.
> 
> Fixes: 07f46c2b6dae ("package/busybox: support automatic module loading with mdev")
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
>  package/busybox/S10mdev | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)

Applied to master with the change suggested by Yann. Thanks!

Thomas
Andy Shevchenko July 2, 2016, 11:43 a.m. UTC | #4
On Fri, 2016-07-01 at 23:53 +0200, Yann E. MORIN wrote:
> Andy, Thomas, All,
> 
> On 2016-07-01 22:54 +0200, Thomas Petazzoni spake thusly:
> > On Fri,  1 Jul 2016 21:56:19 +0300, Andy Shevchenko wrote:
> > > The new change which enabled automatic module loading on boot does
> > > not handle
> > > the cases when module alias includes spaces. It prevents modules
> > > to be loaded
> > > since script fails:
> > > 
> > >   % find /sys/ -name modalias | xargs sort -u
> > >   sort: /sys/devices/platform/Fixed: No such file or directory
> > > 
> > > First alias in question is "platform:Fixed MDIO bus".
> > > 
> > > Amend the script to support above like cases.
> > > 
> > > Fixes: 07f46c2b6dae ("package/busybox: support automatic module
> > > loading with mdev")
> > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> > 
> > Thanks for this patch. However, I have one question below.
> > 
> > > -	find /sys/ -name modalias | xargs sort -u | xargs
> > > modprobe -abq
> > > +	find /sys -name modalias -print0 | xargs -0 sort -u |
> > > while read ma; do
> > 
> > Why is /sys/ changed to /sys ?
> > 
> > Is it because of the sort -u that you cannot do another xargs -0 for
> > the modprobe (which would look nice that the "while read ... done"
> > loop) ?
> 
> sort has a -z option to output with zero-teminated lines instead of
> \n.
> So we could do (almost untested):
> 
>     find /sys/ -name modalias -print0 |xargs -0 sort -u -z |xargs -0
> modprobe -abq

Rough test shows it's working. I will prepare an updated version of the
patch, test it and then send to the list soon.

> 
> Note: the -z option to sort in Busybox depends on SORT_BIG, which is
> enabled in out busybox bundled configuration, so we can use it.
> 
> Regards,
> Yann E. MORIN.
>
diff mbox

Patch

diff --git a/package/busybox/S10mdev b/package/busybox/S10mdev
index 4cb31de..f72c43f 100644
--- a/package/busybox/S10mdev
+++ b/package/busybox/S10mdev
@@ -9,7 +9,9 @@  case "$1" in
 	echo /sbin/mdev >/proc/sys/kernel/hotplug
 	/sbin/mdev -s
 	# coldplug modules
-	find /sys/ -name modalias | xargs sort -u | xargs modprobe -abq
+	find /sys -name modalias -print0 | xargs -0 sort -u | while read ma; do
+		modprobe -bq "$ma"
+	done
 	;;
   stop)
 	;;