diff --git a/src/zfs_arc.c b/src/zfs_arc.c
index f0d23239a82ab158c03c669f9a96cf2fc7f8dd24..8feb31d55c0bfc75f571e0398edfef965e8fcc78 100644 (file)
--- a/src/zfs_arc.c
+++ b/src/zfs_arc.c
return (-1);
}
- len = read_file_contents (ZOL_ARCSTATS_FILE, file_contents, sizeof(file_contents));
+ len = read_file_contents (ZOL_ARCSTATS_FILE, file_contents, sizeof(file_contents) - 1);
if (len > 1)
{
{
llentry_t *e;
llvalues = malloc(sizeof(long long int) * i);
+ if (llvalues == NULL)
+ {
+ ERROR ("zfs_arc plugin: `malloc' failed.");
+ llist_destroy (ksp);
+ return (-1);
+ }
int j = 0;
pnl = file_contents;
za_read_derive (ksp, "deleted", "cache_operation", "deleted");
#if __FreeBSD__
za_read_derive (ksp, "allocated","cache_operation", "allocated");
+#if defined(__FreeBSD_version) && (__FreeBSD_version < 1002501)
+ /* stolen removed from sysctl kstat.zfs.misc.arcstats on FreeBSD 10.2+ */
za_read_derive (ksp, "stolen", "cache_operation", "stolen");
+#endif
#endif
/* Issue indicators */