summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2018-12-07 08:12:40 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2018-12-07 08:12:40 +0100
commitbba3ddf8ef75a6102f48e6017e18f2e703cd3459 (patch)
treefd0a87102d26c91d08c03476650afdc66c9b36c5 /fs
parent4f23fb1070262255443d5fe0c5db757b1b8ea2c2 (diff)
parenta0e2d2fa05384cf9b9c1f00448e1ca175b7b3afb (diff)
downloadbarebox-bba3ddf8ef75a6102f48e6017e18f2e703cd3459.tar.gz
barebox-bba3ddf8ef75a6102f48e6017e18f2e703cd3459.tar.xz
Merge branch 'for-next/net'
Diffstat (limited to 'fs')
-rw-r--r--fs/nfs.c6
-rw-r--r--fs/tftp.c19
2 files changed, 19 insertions, 6 deletions
diff --git a/fs/nfs.c b/fs/nfs.c
index eb5db344db..d7f156687f 100644
--- a/fs/nfs.c
+++ b/fs/nfs.c
@@ -1293,7 +1293,11 @@ static int nfs_probe(struct device_d *dev)
npriv->path = xstrdup(path + 1);
- npriv->server = resolv(tmp);
+ ret = resolv(tmp, &npriv->server);
+ if (ret) {
+ printf("cannot resolve \"%s\": %s\n", tmp, strerror(-ret));
+ goto err1;
+ }
debug("nfs: server: %s path: %s\n", tmp, npriv->path);
diff --git a/fs/tftp.c b/fs/tftp.c
index 0d9ee6effd..1b50ba84f9 100644
--- a/fs/tftp.c
+++ b/fs/tftp.c
@@ -80,7 +80,7 @@ struct file_priv {
int state;
int err;
char *filename;
- int filesize;
+ loff_t filesize;
uint64_t resend_timeout;
uint64_t progress_timeout;
struct kfifo *fifo;
@@ -136,7 +136,7 @@ static int tftp_send(struct file_priv *priv)
"timeout%c"
"%d%c"
"tsize%c"
- "%d%c"
+ "%lld%c"
"blksize%c"
"1432",
priv->filename + 1, 0,
@@ -235,7 +235,7 @@ static void tftp_parse_oack(struct file_priv *priv, unsigned char *pkt, int len)
if (val > s + len)
return;
if (!strcmp(opt, "tsize"))
- priv->filesize = simple_strtoul(val, NULL, 10);
+ priv->filesize = simple_strtoull(val, NULL, 10);
if (!strcmp(opt, "blksize"))
priv->blocksize = simple_strtoul(val, NULL, 10);
pr_debug("OACK opt: %s val: %s\n", opt, val);
@@ -658,7 +658,7 @@ static struct dentry *tftp_lookup(struct inode *dir, struct dentry *dentry,
struct fs_device_d *fsdev = container_of(sb, struct fs_device_d, sb);
struct inode *inode;
struct file_priv *priv;
- int filesize;
+ loff_t filesize;
priv = tftp_do_open(&fsdev->dev, O_RDONLY, dentry);
if (IS_ERR(priv))
@@ -696,10 +696,15 @@ static int tftp_probe(struct device_d *dev)
struct tftp_priv *priv = xzalloc(sizeof(struct tftp_priv));
struct super_block *sb = &fsdev->sb;
struct inode *inode;
+ int ret;
dev->priv = priv;
- priv->server = resolv(fsdev->backingstore);
+ ret = resolv(fsdev->backingstore, &priv->server);
+ if (ret) {
+ pr_err("Cannot resolve \"%s\": %s\n", fsdev->backingstore, strerror(-ret));
+ goto err;
+ }
sb->s_op = &tftp_ops;
@@ -707,6 +712,10 @@ static int tftp_probe(struct device_d *dev)
sb->s_root = d_make_root(inode);
return 0;
+err:
+ free(priv);
+
+ return ret;
}
static void tftp_remove(struct device_d *dev)