svn commit: r344581 - stable/12/sys/geom
Mark Johnston
markj at FreeBSD.org
Tue Feb 26 14:56:02 UTC 2019
Author: markj
Date: Tue Feb 26 14:56:01 2019
New Revision: 344581
URL: https://svnweb.freebsd.org/changeset/base/344581
Log:
MFC r344307:
Limit the number of entries allocated for a REPORT_ZONES command.
Modified:
stable/12/sys/geom/geom_dev.c
Directory Properties:
stable/12/ (props changed)
Modified: stable/12/sys/geom/geom_dev.c
==============================================================================
--- stable/12/sys/geom/geom_dev.c Tue Feb 26 13:18:14 2019 (r344580)
+++ stable/12/sys/geom/geom_dev.c Tue Feb 26 14:56:01 2019 (r344581)
@@ -663,8 +663,10 @@ g_dev_ioctl(struct cdev *dev, u_long cmd, caddr_t data
alloc_size = 0;
if (zone_args->zone_cmd == DISK_ZONE_REPORT_ZONES) {
-
rep = &zone_args->zone_params.report;
+#define MAXENTRIES (MAXPHYS / sizeof(struct disk_zone_rep_entry))
+ if (rep->entries_allocated > MAXENTRIES)
+ rep->entries_allocated = MAXENTRIES;
alloc_size = rep->entries_allocated *
sizeof(struct disk_zone_rep_entry);
if (alloc_size != 0)
@@ -674,15 +676,11 @@ g_dev_ioctl(struct cdev *dev, u_long cmd, caddr_t data
rep->entries = new_entries;
}
error = g_io_zonecmd(zone_args, cp);
- if ((zone_args->zone_cmd == DISK_ZONE_REPORT_ZONES)
- && (alloc_size != 0)
- && (error == 0)) {
+ if (zone_args->zone_cmd == DISK_ZONE_REPORT_ZONES &&
+ alloc_size != 0 && error == 0)
error = copyout(new_entries, old_entries, alloc_size);
- }
- if ((old_entries != NULL)
- && (rep != NULL))
+ if (old_entries != NULL && rep != NULL)
rep->entries = old_entries;
-
if (new_entries != NULL)
g_free(new_entries);
break;
More information about the svn-src-stable
mailing list