Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

fuse: remove redundant calls to fuse_copy_finish() in fuse_notify()

Remove tail calls of fuse_copy_finish(), since it's now done from
fuse_dev_do_write().

No functional change.

Reviewed-by: Joanne Koong <joannelkoong@gmail.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>

+23 -56
+23 -56
fs/fuse/dev.c
··· 1622 1622 struct fuse_copy_state *cs) 1623 1623 { 1624 1624 struct fuse_notify_poll_wakeup_out outarg; 1625 - int err = -EINVAL; 1625 + int err; 1626 1626 1627 1627 if (size != sizeof(outarg)) 1628 - goto err; 1628 + return -EINVAL; 1629 1629 1630 1630 err = fuse_copy_one(cs, &outarg, sizeof(outarg)); 1631 1631 if (err) 1632 - goto err; 1632 + return err; 1633 1633 1634 1634 fuse_copy_finish(cs); 1635 1635 return fuse_notify_poll_wakeup(fc, &outarg); 1636 - 1637 - err: 1638 - fuse_copy_finish(cs); 1639 - return err; 1640 1636 } 1641 1637 1642 1638 static int fuse_notify_inval_inode(struct fuse_conn *fc, unsigned int size, 1643 1639 struct fuse_copy_state *cs) 1644 1640 { 1645 1641 struct fuse_notify_inval_inode_out outarg; 1646 - int err = -EINVAL; 1642 + int err; 1647 1643 1648 1644 if (size != sizeof(outarg)) 1649 - goto err; 1645 + return -EINVAL; 1650 1646 1651 1647 err = fuse_copy_one(cs, &outarg, sizeof(outarg)); 1652 1648 if (err) 1653 - goto err; 1649 + return err; 1654 1650 fuse_copy_finish(cs); 1655 1651 1656 1652 down_read(&fc->killsb); 1657 1653 err = fuse_reverse_inval_inode(fc, outarg.ino, 1658 1654 outarg.off, outarg.len); 1659 1655 up_read(&fc->killsb); 1660 - return err; 1661 - 1662 - err: 1663 - fuse_copy_finish(cs); 1664 1656 return err; 1665 1657 } 1666 1658 ··· 1661 1669 { 1662 1670 struct fuse_notify_inval_entry_out outarg; 1663 1671 int err; 1664 - char *buf = NULL; 1672 + char *buf; 1665 1673 struct qstr name; 1666 1674 1667 - err = -EINVAL; 1668 1675 if (size < sizeof(outarg)) 1669 - goto err; 1676 + return -EINVAL; 1670 1677 1671 1678 err = fuse_copy_one(cs, &outarg, sizeof(outarg)); 1672 1679 if (err) 1673 - goto err; 1680 + return err; 1674 1681 1675 - err = -ENAMETOOLONG; 1676 1682 if (outarg.namelen > fc->name_max) 1677 - goto err; 1683 + return -ENAMETOOLONG; 1678 1684 1679 1685 err = -EINVAL; 1680 1686 if (size != sizeof(outarg) + outarg.namelen + 1) 1681 - goto err; 1687 + return -EINVAL; 1682 1688 1683 - err = -ENOMEM; 1684 1689 buf = kzalloc(outarg.namelen + 1, GFP_KERNEL); 1685 1690 if (!buf) 1686 - goto err; 1691 + return -ENOMEM; 1687 1692 1688 1693 name.name = buf; 1689 1694 name.len = outarg.namelen; ··· 1693 1704 down_read(&fc->killsb); 1694 1705 err = fuse_reverse_inval_entry(fc, outarg.parent, 0, &name, outarg.flags); 1695 1706 up_read(&fc->killsb); 1696 - kfree(buf); 1697 - return err; 1698 - 1699 1707 err: 1700 1708 kfree(buf); 1701 - fuse_copy_finish(cs); 1702 1709 return err; 1703 1710 } 1704 1711 ··· 1703 1718 { 1704 1719 struct fuse_notify_delete_out outarg; 1705 1720 int err; 1706 - char *buf = NULL; 1721 + char *buf; 1707 1722 struct qstr name; 1708 1723 1709 - err = -EINVAL; 1710 1724 if (size < sizeof(outarg)) 1711 - goto err; 1725 + return -EINVAL; 1712 1726 1713 1727 err = fuse_copy_one(cs, &outarg, sizeof(outarg)); 1714 1728 if (err) 1715 - goto err; 1729 + return err; 1716 1730 1717 - err = -ENAMETOOLONG; 1718 1731 if (outarg.namelen > fc->name_max) 1719 - goto err; 1732 + return -ENAMETOOLONG; 1720 1733 1721 - err = -EINVAL; 1722 1734 if (size != sizeof(outarg) + outarg.namelen + 1) 1723 - goto err; 1735 + return -EINVAL; 1724 1736 1725 - err = -ENOMEM; 1726 1737 buf = kzalloc(outarg.namelen + 1, GFP_KERNEL); 1727 1738 if (!buf) 1728 - goto err; 1739 + return -ENOMEM; 1729 1740 1730 1741 name.name = buf; 1731 1742 name.len = outarg.namelen; ··· 1734 1753 down_read(&fc->killsb); 1735 1754 err = fuse_reverse_inval_entry(fc, outarg.parent, outarg.child, &name, 0); 1736 1755 up_read(&fc->killsb); 1737 - kfree(buf); 1738 - return err; 1739 - 1740 1756 err: 1741 1757 kfree(buf); 1742 - fuse_copy_finish(cs); 1743 1758 return err; 1744 1759 } 1745 1760 ··· 1753 1776 loff_t file_size; 1754 1777 loff_t end; 1755 1778 1756 - err = -EINVAL; 1757 1779 if (size < sizeof(outarg)) 1758 - goto out_finish; 1780 + return -EINVAL; 1759 1781 1760 1782 err = fuse_copy_one(cs, &outarg, sizeof(outarg)); 1761 1783 if (err) 1762 - goto out_finish; 1784 + return err; 1763 1785 1764 - err = -EINVAL; 1765 1786 if (size - sizeof(outarg) != outarg.size) 1766 - goto out_finish; 1787 + return -EINVAL; 1767 1788 1768 1789 nodeid = outarg.nodeid; 1769 1790 ··· 1821 1846 iput(inode); 1822 1847 out_up_killsb: 1823 1848 up_read(&fc->killsb); 1824 - out_finish: 1825 - fuse_copy_finish(cs); 1826 1849 return err; 1827 1850 } 1828 1851 ··· 1935 1962 u64 nodeid; 1936 1963 int err; 1937 1964 1938 - err = -EINVAL; 1939 1965 if (size != sizeof(outarg)) 1940 - goto copy_finish; 1966 + return -EINVAL; 1941 1967 1942 1968 err = fuse_copy_one(cs, &outarg, sizeof(outarg)); 1943 1969 if (err) 1944 - goto copy_finish; 1970 + return err; 1945 1971 1946 1972 fuse_copy_finish(cs); 1947 1973 ··· 1955 1983 } 1956 1984 up_read(&fc->killsb); 1957 1985 1958 - return err; 1959 - 1960 - copy_finish: 1961 - fuse_copy_finish(cs); 1962 1986 return err; 1963 1987 } 1964 1988 ··· 2066 2098 return fuse_notify_inc_epoch(fc); 2067 2099 2068 2100 default: 2069 - fuse_copy_finish(cs); 2070 2101 return -EINVAL; 2071 2102 } 2072 2103 }