diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2018-12-07 08:12:40 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2018-12-07 08:12:40 +0100 |
commit | bba3ddf8ef75a6102f48e6017e18f2e703cd3459 (patch) | |
tree | fd0a87102d26c91d08c03476650afdc66c9b36c5 /fs | |
parent | 4f23fb1070262255443d5fe0c5db757b1b8ea2c2 (diff) | |
parent | a0e2d2fa05384cf9b9c1f00448e1ca175b7b3afb (diff) | |
download | barebox-bba3ddf8ef75a6102f48e6017e18f2e703cd3459.tar.gz barebox-bba3ddf8ef75a6102f48e6017e18f2e703cd3459.tar.xz |
Merge branch 'for-next/net'
Diffstat (limited to 'fs')
-rw-r--r-- | fs/nfs.c | 6 | ||||
-rw-r--r-- | fs/tftp.c | 19 |
2 files changed, 19 insertions, 6 deletions
@@ -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); @@ -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) |