Don't inadvertently unmount large block devices (fdo #48155)

Signed-off-by: David Zeuthen <davidz@redhat.com>
This commit is contained in:
David Zeuthen 2012-04-03 11:28:47 -04:00
parent 0c54bf75af
commit 807f1fa07f
2 changed files with 47 additions and 1 deletions

View File

@ -0,0 +1,40 @@
From 5dd2ef0710584626f81a89b81180fa81d04b6956 Mon Sep 17 00:00:00 2001
From: Edward Sheldrake <ejsheldrake@gmail.com>
Date: Sun, 1 Apr 2012 15:58:08 +0100
Subject: [PATCH] Fix unmounting large disks when not asked to
udisks2 was "Cleaning up mount point" claiming the device no longer existed.
Disk size may be larger than INT_MAX for large disks.
https://bugs.freedesktop.org/show_bug.cgi?id=48155
Signed-off-by: David Zeuthen <davidz@redhat.com>
---
src/udiskscleanup.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/udiskscleanup.c b/src/udiskscleanup.c
index b5b61c1..9daa980 100644
--- a/src/udiskscleanup.c
+++ b/src/udiskscleanup.c
@@ -605,7 +605,7 @@ udisks_cleanup_check_mounted_fs_entry (UDisksCleanup *cleanup,
/* if umounting, issue 'change' event on the device after unmounting it */
change_sysfs_path = g_strdup (g_udev_device_get_sysfs_path (udev_device));
- if (g_udev_device_get_sysfs_attr_as_int (udev_device, "size") > 0)
+ if (g_udev_device_get_sysfs_attr_as_uint64 (udev_device, "size") > 0)
{
/* for partition, also check enclosing device */
if (g_strcmp0 (g_udev_device_get_devtype (udev_device), "partition") == 0)
@@ -614,7 +614,7 @@ udisks_cleanup_check_mounted_fs_entry (UDisksCleanup *cleanup,
udev_device_disk = g_udev_device_get_parent_with_subsystem (udev_device, "block", "disk");
if (udev_device_disk != NULL)
{
- if (g_udev_device_get_sysfs_attr_as_int (udev_device_disk, "size") > 0)
+ if (g_udev_device_get_sysfs_attr_as_uint64 (udev_device_disk, "size") > 0)
{
device_exists = TRUE;
}
--
1.7.9.3

View File

@ -8,7 +8,7 @@
Summary: Disk Manager Summary: Disk Manager
Name: udisks2 Name: udisks2
Version: 1.93.0 Version: 1.93.0
Release: 1%{?dist} Release: 2%{?dist}
License: GPLv2+ License: GPLv2+
Group: System Environment/Libraries Group: System Environment/Libraries
URL: http://www.freedesktop.org/wiki/Software/udisks URL: http://www.freedesktop.org/wiki/Software/udisks
@ -51,6 +51,8 @@ Requires: acl
# for /proc/self/mountinfo, only available in 2.6.26 or higher # for /proc/self/mountinfo, only available in 2.6.26 or higher
Conflicts: kernel < 2.6.26 Conflicts: kernel < 2.6.26
Patch0: udisks-1.93.0-fix-unmounting-large-disks.patch
%description %description
udisks provides a daemon, D-Bus API and command line tools for udisks provides a daemon, D-Bus API and command line tools for
managing disks and storage devices. This package is for the udisks 2.x managing disks and storage devices. This package is for the udisks 2.x
@ -80,6 +82,7 @@ daemon. This package is for the udisks 2.x series.
%prep %prep
%setup -q -n udisks-%{version} %setup -q -n udisks-%{version}
%patch0 -p1
%build %build
%configure --enable-gtk-doc %configure --enable-gtk-doc
@ -137,6 +140,9 @@ rm -f $RPM_BUILD_ROOT%{_libdir}/*.a
# Note: please don't forget the %{?dist} in the changelog. Thanks # Note: please don't forget the %{?dist} in the changelog. Thanks
%changelog %changelog
* Tue Apr 03 2012 David Zeuthen <davidz@redhat.com> - 1.93.0-2%{?dist}
- Don't inadvertently unmount large block devices (fdo #48155)
* Mon Mar 05 2012 David Zeuthen <davidz@redhat.com> - 1.93.0-1%{?dist} * Mon Mar 05 2012 David Zeuthen <davidz@redhat.com> - 1.93.0-1%{?dist}
- Update to release 1.93.0 - Update to release 1.93.0