mdev: safer handling of $SUBSYSTEM in mdev -s
This commit is contained in:
parent
7223424815
commit
32a3d084d3
@ -1,6 +1,5 @@
|
|||||||
/* vi: set sw=4 ts=4: */
|
/* vi: set sw=4 ts=4: */
|
||||||
/*
|
/*
|
||||||
*
|
|
||||||
* mdev - Mini udev for busybox
|
* mdev - Mini udev for busybox
|
||||||
*
|
*
|
||||||
* Copyright 2005 Rob Landley <rob@landley.net>
|
* Copyright 2005 Rob Landley <rob@landley.net>
|
||||||
@ -8,7 +7,6 @@
|
|||||||
*
|
*
|
||||||
* Licensed under GPL version 2, see file LICENSE in this tarball for details.
|
* Licensed under GPL version 2, see file LICENSE in this tarball for details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "libbb.h"
|
#include "libbb.h"
|
||||||
#include "xregex.h"
|
#include "xregex.h"
|
||||||
|
|
||||||
@ -353,11 +351,13 @@ static int FAST_FUNC dirAction(const char *fileName UNUSED_PARAM,
|
|||||||
void *userData UNUSED_PARAM,
|
void *userData UNUSED_PARAM,
|
||||||
int depth)
|
int depth)
|
||||||
{
|
{
|
||||||
/* Extract device subsystem -- the name of the directory under /sys/class/ */
|
/* Extract device subsystem -- the name of the directory
|
||||||
|
* under /sys/class/ */
|
||||||
if (1 == depth) {
|
if (1 == depth) {
|
||||||
|
free(subsystem);
|
||||||
subsystem = strrchr(fileName, '/');
|
subsystem = strrchr(fileName, '/');
|
||||||
if (subsystem)
|
if (subsystem)
|
||||||
subsystem++;
|
subsystem = xstrdup(subsystem + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (depth >= MAX_SYSFS_DEPTH ? SKIP : TRUE);
|
return (depth >= MAX_SYSFS_DEPTH ? SKIP : TRUE);
|
||||||
@ -397,17 +397,17 @@ static void load_firmware(const char *const firmware, const char *const sysfs_pa
|
|||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
loading:
|
loading:
|
||||||
/* tell kernel we're loading by `echo 1 > /sys/$DEVPATH/loading` */
|
/* tell kernel we're loading by "echo 1 > /sys/$DEVPATH/loading" */
|
||||||
if (full_write(loading_fd, "1", 1) != 1)
|
if (full_write(loading_fd, "1", 1) != 1)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
/* load firmware by `cat /lib/firmware/$FIRMWARE > /sys/$DEVPATH/data */
|
/* load firmware into /sys/$DEVPATH/data */
|
||||||
data_fd = open("data", O_WRONLY);
|
data_fd = open("data", O_WRONLY);
|
||||||
if (data_fd == -1)
|
if (data_fd == -1)
|
||||||
goto out;
|
goto out;
|
||||||
cnt = bb_copyfd_eof(firmware_fd, data_fd);
|
cnt = bb_copyfd_eof(firmware_fd, data_fd);
|
||||||
|
|
||||||
/* tell kernel result by `echo [0|-1] > /sys/$DEVPATH/loading` */
|
/* tell kernel result by "echo [0|-1] > /sys/$DEVPATH/loading" */
|
||||||
if (cnt > 0)
|
if (cnt > 0)
|
||||||
full_write(loading_fd, "0", 1);
|
full_write(loading_fd, "0", 1);
|
||||||
else
|
else
|
||||||
|
Loading…
x
Reference in New Issue
Block a user