diff --git a/driver/device-mapper/dm-fs.c b/driver/device-mapper/dm-fs.c index 3cda49155..ca549d4d8 100644 --- a/driver/device-mapper/dm-fs.c +++ b/driver/device-mapper/dm-fs.c @@ -258,7 +258,7 @@ static int _get_word(const char *b, const char *e, return 0; *wb = b; - while(b != e && !isspace((int) b)) + while(b != e && !isspace((int) *b)) b++; *we = b; return 1; @@ -267,6 +267,7 @@ static int _get_word(const char *b, const char *e, static int _line_splitter(struct file *file, const char *buffer, unsigned long count, void *data) { + int r; const char *b = buffer, *e = buffer + count, *lb; struct pf_data *pfd = (struct pf_data *) data; @@ -279,8 +280,8 @@ static int _line_splitter(struct file *file, const char *buffer, while((b != e) && *b != '\n') b++; - if (!pfd->fn(lb, b, pfd->minor)) - return lb - buffer; + if ((r = pfd->fn(lb, b, pfd->minor))) + return r; } return count; diff --git a/driver/device-mapper/dm-target.c b/driver/device-mapper/dm-target.c index 7f210d871..3fa7ba558 100644 --- a/driver/device-mapper/dm-target.c +++ b/driver/device-mapper/dm-target.c @@ -61,7 +61,9 @@ int register_map_target(const char *name, dm_ctr_fn ctr, return -1; /* FIXME: what's a good return value ? */ } - t->name = name; + t->name = (char *) t + 1; + strcpy(t->name, name); + t->ctr = ctr; t->dtr = dtr; t->map = map;